如何获取单击的位置

本文关键字:单击 位置 获取 何获取 | 更新日期: 2023-09-27 18:05:45

我目前正在制作一款游戏,玩家可以点击他的一个单位(也就是图片框),然后一个圆圈就会出现,玩家的单位在中间。(圆圈也是一个图片框)当玩家点击圆圈的图片框时,我需要弄清楚点击的位置是否在圆圈的半径内。我的问题是如何得到点击的位置?

如何获取单击的位置

在点击处理程序中,执行:

MousePosition.X
MousePosition.Y

例子:

// 
// pictureBox1 Init
// 
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只接收MouseUpMouseDownMouseClick不能接收你的坐标,因为点击由MouseUpMouseDown组成,两者可以有不同的坐标。

还有一个解决方案(我认为这是最好的):

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

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

使用PictureBoxMouseClick事件来处理这种事情…

看到
http://msdn.microsoft.com/en-us/library/system.windows.forms.picturebox.aspx
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.mouseclick.aspx
http://msdn.microsoft.com/en-us/library/system.windows.forms.mouseeventargs.aspx