2011-08-14 79 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