web-dev-qa-db-fra.com

Comment obtenir la position d'un clic?

Je fais actuellement un jeu où le joueur cliquera sur l'une de ses unités (qui sont des boîtes à images) et un cercle deviendra visible avec l'unité du joueur au centre. (Le cercle est également une boîte à images) Lorsque le joueur clique sur la boîte à images du cercle, je dois déterminer si la position du clic se situe dans le rayon du cercle. Ma question est de savoir comment obtenir la position du clic?

16
Mobianhero

Dans le gestionnaire de clics, faites:

   MousePosition.X
   MousePosition.Y

Ajouter un exemple:

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

Spectacles: "X: 537 Y: 946"

Encore une chose:

Les MouseEventArgs avec coordonnées reçoivent uniquement MouseUp et MouseDown.

MouseClick ne peut pas recevoir vos coordonnées car le clic consiste en MouseUp et MouseDown et les deux peuvent avoir des coordonnées différentes.

ne autre solution (pensez-y mieux)

    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;
    }
26
Alexander Molodih
3
Yahia

Avec la réponse de Yahia , j'ai appris que le EventArgs peut être converti en 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));
}
1
D.Kastier