如何获得Click的位置?

Mob*_*ero 16 c# position click picturebox

我正在制作一款游戏,玩家可以点击其中一个单位(即图片框),并且玩家的单位位于中心,可以看到一个圆圈.(圆圈也是一个图片框)当玩家点击圆圈的图片框时,我需要弄清楚点击的位置是否在圆的半径范围内.我的问题是如何获得点击的位置?

Ale*_*dih 26

在点击处理程序中:

   MousePosition.X
   MousePosition.Y
Run Code Online (Sandbox Code Playgroud)

添加示例:

        // 
        // 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);
Run Code Online (Sandbox Code Playgroud)

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

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

显示:"X:537 Y:946"

还有一件事:

带坐标的MouseEventArgs仅接收MouseUp和MouseDown.

鼠标点击无法让你回头,因为点击包含来自MouseUp和MouseDown,它们都可以有不同的坐标.

还有一个解决方案(最好的想法)

    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;
    }
Run Code Online (Sandbox Code Playgroud)


D.K*_*ier 7

通过Yahia的回答,我了解到EventArgs可以投射到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));
}
Run Code Online (Sandbox Code Playgroud)