2011-08-14 105 views
15

目前,我正在做一個遊戲,玩家會點擊他的單位(這是pictureboxes)之一,一個圓將成爲玩家的中心單元可見。 (圓圈也是一個圖片框)當玩家點擊圓圈的圖片框時,我需要弄清楚點擊的位置是否在圓圈的半徑內。我的問題是如何獲得點擊的位置?如何獲得點擊的位置?

+2

如果您正在努力製作遊戲,那麼使用winforms框架並不是最佳選擇。從基於控制檯的遊戲開始,到XNA(或任何其他C#遊戲引擎)的工作方式如何? – Neowizard

回答

23

在點擊處理函數中執行:

MousePosition.X 
    MousePosition.Y 

添加例如:

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

表示: 「X:537 Y:946」

還有一件事:

帶座標的MouseEventArgs只接收MouseUp和MouseDown。

鼠標點擊不能recive你cordinates因爲點擊由來自mouseup和的MouseDown,它都可以有不同的座標。

還有一個解決方案(認爲最好)

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

我能得到一個代碼類型的例子,因爲我無法獲得點擊的工作,當我點擊一個圖片我做了一個試驗:保護覆蓋無效OnMouseClick(MouseEventArgs E) { base.OnMouseClick(E); 如果(MousePosition.X> 200){MessageBox.Show( 「YESSSSSSS」); } } – Mobianhero

+0

我已經在上面添加了一個例子! –

+0

帶座標的MouseEventArgs只接收MouseUp和MouseDown。 MouseClick無法收回你的座標,因爲click由MouseUp和MouseDown組成,並且它們可以有不同的座標。 –

2
+0

我還是不知道怎樣才能獲得的點擊 – Mobianhero

+0

的'OnMouseClick'接收'MouseEventArgs'的座標爲具有'X'參數和'Y'座標......看到上面的鏈接... – Yahia

+2

我只是取而代之的是xna – Mobianhero