如何获取单击的位置
本文关键字:单击 位置 获取 何获取 | 更新日期: 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
只接收MouseUp
和MouseDown
。MouseClick
不能接收你的坐标,因为点击由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;
}
通过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));
}
使用PictureBox
的MouseClick
事件来处理这种事情…
看到
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