我正在制作一个游戏,玩家将点击他的一个单位(这是图片框),并且玩家的单位在中心可以看到一个圆圈。 (圆圈也是一个图片框)当玩家点击圆圈的图片框时,我需要弄清楚点击的位置是否在圆的半径范围内。我的问题是如何获得点击的位置?
在点击处理程序中:
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;
}
根据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));
}