我目前正在制作一款游戏,玩家将点击他的一个单位(这些单位是图片框),然后一个圆形将显示出来,其中心是玩家的单位(圆形也是一个图片框)。当玩家点击圆形的图片框时,我需要确定点击的位置是否在圆形的半径内。我的问题是如何获取点击的位置?
我目前正在制作一款游戏,玩家将点击他的一个单位(这些单位是图片框),然后一个圆形将显示出来,其中心是玩家的单位(圆形也是一个图片框)。当玩家点击圆形的图片框时,我需要确定点击的位置是否在圆形的半径内。我的问题是如何获取点击的位置?
在您的单击事件处理程序中,执行以下操作:
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
”
还有一件事:
只有 MouseUp
和 MouseDown
事件才能接收带有坐标的 MouseEventArgs
。由于一个单击操作包括 MouseUp
和 MouseDown
两个事件,每个事件的坐标可能不同,所以无法从 MouseClick
事件中获得鼠标坐标。
另外一个解决方案(我认为这是最好的):
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));
}
OnMouseClick
жҺҘ收 MouseEventArgs
дҪңдёәеҸӮж•°пјҢиҜҘеҸӮж•°е…·жңү X
е’Ң Y
еқҗж Ү...иҜ·еҸӮи§ҒдёҠйқўзҡ„й“ҫжҺҘ... - Yahia