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?
Asked
Active
Viewed 8.8k times
19
-
2If you're working towards making a game, using the winforms framework is not the best choice. How about starting out with a console based game and working your way up to XNA (Or any other C# game engine). – Neowizard Aug 14 '11 at 05:39
3 Answers
29
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;
}

CarenRose
- 1,266
- 1
- 12
- 24

Alexander Molodih
- 1,928
- 2
- 20
- 30
-
Could I get a code type example because I can't get the click to work when I click a picturebox I did a test: protected override void OnMouseClick(MouseEventArgs e) { base.OnMouseClick(e); if (MousePosition.X > 200) { MessageBox.Show("YESSSSSSS"); } } – Mobianhero Aug 14 '11 at 15:25
-
The MouseEventArgs with coordinates receive only MouseUp and MouseDown. MouseClick can't recive you cordinates because click consists from MouseUp and MouseDown and it both can have different coordinates. – Alexander Molodih Aug 15 '11 at 09:30
3
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

Yahia
- 69,653
- 9
- 115
- 144
-
-
The `OnMouseClick` receives `MouseEventArgs` as parameter which has `X` and `Y` coordinates... see the links above... – Yahia Aug 14 '11 at 05:54
-
2