Obecnie tworzę grę, w której gracz kliknie na jedną ze swoich jednostek (które są obrazkami), a koło stanie się widoczne z jednostką gracza pośrodku. (Circle jest także obrazkiem) Kiedy gracz kliknie na obrazek koła, muszę się dowiedzieć, czy pozycja kliknięcia znajduje się w promieniu koła. Moje pytanie brzmi: jak uzyskać pozycję kliknięcia?Jak uzyskać pozycję kliknięcia?
Odpowiedz
W click obsługi zrobić:
MousePosition.X
MousePosition.Y
Dodaj przykład:
//
// 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));
}
Pokazy: "X: 537 Y: 946"
Jeszcze jedna rzecz:
MouseEventArgs ze współrzędnymi otrzymują tylko MouseUp i MouseDown.
MouseClick nie może odbierać ci kordinatów, ponieważ kliknięcie składa się z MouseUp i MouseDown i oba mogą mieć różne współrzędne.
Jeszcze rozwiązanie (myślę, że najlepiej)
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;
}
Mogę uzyskać przykład kodu, ponieważ nie mogę uzyskać kliknięcia do pracy po kliknięciu na obrazek Wykonałem test: chronione zastępowanie void OnMouseClick (MouseEventArgs e) { base.OnMouseClick (e); if (MousePosition.X> 200) {MessageBox.Show ("YESSSSSSS"); } } – Mobianhero
Dodałem przykład w górnym! –
MouseEventArgs ze współrzędnymi otrzymują tylko MouseUp i MouseDown. MouseClick nie może odebrać ci kordinatów, ponieważ kliknięcie składa się z MouseUp i MouseDown i oba mogą mieć różne współrzędne. –
użyć zdarzenia MouseClick
z PictureBox
dla tego typu rzeczy ...
zobaczyć
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
Nadal nie widzę, jak mogę uzyskać współrzędne kliknięcia – Mobianhero
"OnMouseClick" odbiera 'MouseEventArgs' jako parametr, który ma współrzędne" X "i" Y "... zobacz linki powyżej ... – Yahia
Po prostu zrobiłem to na xna – Mobianhero
Jeśli pracujesz nad stworzeniem gry, korzystanie z frameworka WinForm nie jest najlepszym wyborem. Co powiesz na rozpoczęcie gry z konsolą i przejście do XNA (lub dowolnego innego silnika gry C#). – Neowizard