c# click position picturebox

c# - ¿Cómo obtener la posición de un clic?



click position (3)

Actualmente estoy haciendo un juego en el que el jugador hará clic en una de sus unidades (que son cajas de imágenes) y aparecerá un círculo 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 caja de imágenes del círculo, tengo que 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?


Con la respuesta de Yahia , aprendí que los EventArgs se pueden convertir a MouseEventArgs .

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


En el controlador de clic hacer:

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)); }

Espectáculos: "X: 537 Y: 946"

Una cosa más:

MouseEventArgs con coordenadas recibe solo MouseUp y MouseDown.

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

Una solución más (piénselo 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; }