2011-08-14 37 views
15

Tôi hiện đang thực hiện một trò chơi mà người chơi sẽ nhấp vào một trong các đơn vị của anh ấy (đó là pictureboxes) và một vòng tròn sẽ hiển thị với đơn vị của người chơi ở trung tâm. (Circle cũng là một picturebox) Khi người chơi nhấp chuột vào hình của vòng tròn, tôi cần phải tìm ra nếu vị trí của các nhấp chuột là bên trong bán kính của vòng tròn. Câu hỏi của tôi là làm cách nào để tôi có được vị trí của nhấp chuột?Cách nhận vị trí của một lần nhấp?

+2

Nếu bạn đang làm việc hướng tới việc tạo ra một trò chơi, sử dụng khung hình winforms không phải là lựa chọn tốt nhất. Làm thế nào về bắt đầu với một trò chơi dựa trên giao diện điều khiển và làm việc theo cách của bạn lên đến XNA (Hoặc bất kỳ công cụ trò chơi C# khác). – Neowizard

Trả lời

23

Trong handler nhấp chuột làm:

MousePosition.X 
    MousePosition.Y 

Thêm dụ:

 // 
     // 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)); 
    } 

cho thấy: "X: 537 Y: 946"

Một điều nữa:

MouseEventArgs với tọa độ chỉ nhận MouseUp và MouseDown.

MouseClick không thể giúp bạn nhớ lại vì bạn nhấp chuột bao gồm từ MouseUp và MouseDown và cả hai đều có tọa độ khác nhau.

Thêm một giải pháp (Hãy nghĩ nó tốt nhất)

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

Tôi có thể lấy ví dụ về loại mã vì tôi không thể nhận được nhấp chuột để hoạt động khi tôi nhấp vào một hình ảnh tôi đã thực hiện thử nghiệm: void ghi đè được bảo vệ OnMouseClick (MouseEventArgs e) { base.OnMouseClick (e); nếu (MousePosition.X> 200) {MessageBox.Show ("YESSSSSSS"); } } – Mobianhero

+0

Tôi đã thêm ví dụ ở trên! –

+0

MouseEventArgs với tọa độ chỉ nhận được MouseUp và MouseDown. MouseClick không thể giúp bạn nhớ lại vì bạn nhấp chuột bao gồm MouseUp và MouseDown và cả hai đều có tọa độ khác nhau. –

2
+0

Tôi vẫn không thấy cách tôi có thể nhận tọa độ của nhấp chuột – Mobianhero

+0

'OnMouseClick' nhận' MouseEventArgs' làm thông số có các tọa độ 'X' và' Y' ... xem các liên kết ở trên ... – Yahia

+2

Tôi chỉ đã tạo nó trên xna – Mobianhero

Các vấn đề liên quan