I'm currently making a game where the player will click on one of his units (which are pictureboxes) and a circle will become visible with the player's unit in the center. (Circle is also a picturebox) When the player clicks on the picturebox of the circle I need to figure out if the position of the click is inside the radius of the circle. My question is how do I get the position of the click?
In your click handler, do:
MousePosition.X
MousePosition.Y
Example:
//
// 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));
}
Shows: "X: 537 Y: 946
"
One more thing:
The MouseEventArgs
with coordinates only receives MouseUp
and MouseDown
. A MouseClick
can't receive your coordinates, because a click consists of a MouseUp
and a MouseDown
, and both can have different coordinates.
One more solution (I think this is best):
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;
}
With Yahia's answer, I learned that the EventArgs
can be cast to 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));
}
use the MouseClick
event of the PictureBox
for this sort of thing...
see
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With