2011-08-14 12 views
15

Actualmente estoy haciendo un juego donde el jugador hará clic en una de sus unidades (que son cajas de fotos) y un círculo se hará visible con la unidad del jugador en el centro. (El círculo también es una caja de imágenes) Cuando el jugador hace clic en la casilla de imágenes del círculo, necesito averiguar si la posición del clic está dentro del radio del círculo. Mi pregunta es ¿cómo obtengo la posición del clic?¿Cómo obtener la posición de un clic?

+2

Si está trabajando para crear un juego, usar el framework winforms no es la mejor opción. ¿Qué hay de comenzar con un juego basado en consola y trabajar hasta XNA (o cualquier otro motor de juego C#). – Neowizard

Respuesta

23

En controlador de clic do:

MousePosition.X 
    MousePosition.Y 

Añadir ejemplo:

 // 
     // pictureBox1 Init 
     // 
     this.pictureBox1.Location = new System.Drawing.Point(1, 1); 
     this.pictureBox1.Name = "pictureBox1"; 
     this.pictureBox1.Size = new System.Drawing.Size(100, 100); 
     this.pictureBox1.Click += new System.EventHandler(this.pictureBox1_Click); 

...................... ....................

private void pictureBox1_Click(object sender, EventArgs e) 
    { 
     MessageBox.Show(string.Format("X: {0} Y: {1}", MousePosition.X, MousePosition.Y)); 
    } 

Shows: "X: 537 Y: 946"

Una cosa más:

Las MouseEventArgs con coordenadas solo reciben MouseUp y MouseDown.

MouseClick no puede recibir los cordinates porque el clic consiste en MouseUp y MouseDown y ambos pueden tener diferentes coordenadas.

Una solución más (que es mejor)

private int X; 
    private int Y; 

    private void pictureBox1_Click(object sender, EventArgs e) 
    { 
     MessageBox.Show(string.Format("X: {0} Y: {1}", X, Y)); 
    } 

    private void pictureBox1_MouseUp(object sender, MouseEventArgs e) 
    { 
     X = e.X; 
     Y = e.Y; 
    } 
+0

¿Podría obtener un ejemplo de tipo de código porque no puedo hacer que el clic funcione cuando hago clic en un cuadro de imagen? Realicé una prueba: anulación protegida anulada OnMouseClick (MouseEventArgs e) { base.OnMouseClick (e); if (MousePosition.X> 200) {MessageBox.Show ("YESSSSSSS"); } } – Mobianhero

+0

¡He añadido un ejemplo en la parte superior! –

+0

Los MouseEventArgs con coordenadas solo reciben MouseUp y MouseDown. MouseClick no puede recibirle cordinates porque el clic consiste en MouseUp y MouseDown y ambos pueden tener diferentes coordenadas. –

2
+0

Todavía no veo cómo puedo obtener las coordenadas del clic – Mobianhero

+0

El 'OnMouseClick' recibe' MouseEventArgs' como parámetro que tiene coordenadas 'X' y' Y' ... vea los enlaces de arriba ... – Yahia

+2

Acabo de lo hizo en xna en su lugar – Mobianhero

Cuestiones relacionadas