如何获得Click的位置?

问题描述 投票:16回答:3

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

c# click position picturebox
3个回答
25
投票

在点击处理程序中:

   MousePosition.X
   MousePosition.Y

添加示例:

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

显示:“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;
    }


1
投票

根据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));
}
© www.soinside.com 2019 - 2024. All rights reserved.