2011-08-14 14 views
15

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?

+2

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

Odpowiedz

23

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; 
    } 
+0

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

+0

Dodałem przykład w górnym! –

+0

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. –

2
+0

Nadal nie widzę, jak mogę uzyskać współrzędne kliknięcia – Mobianhero

+0

"OnMouseClick" odbiera 'MouseEventArgs' jako parametr, który ma współrzędne" X "i" Y "... zobacz linki powyżej ... – Yahia

+2

Po prostu zrobiłem to na xna – Mobianhero

Powiązane problemy