如何获得Click的位置?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何获得Click的位置?相关的知识,希望对你有一定的参考价值。

我正在制作一个游戏,玩家将点击他的一个单位(这是图片框),并且玩家的单位在中心可以看到一个圆圈。 (圆圈也是一个图片框)当玩家点击圆圈的图片框时,我需要弄清楚点击的位置是否在圆的半径范围内。我的问题是如何获得点击的位置?

答案

在点击处理程序中:

   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。

鼠标单击无法接收您的坐标,因为单击来自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;
    }
另一答案

使用MouseClickPictureBox事件来做这种事情......

看到 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

另一答案

根据Yahia的回答,我了解到EventArgs可以投射到MouseEventArgs

private void pictureBox1_Click(object sender, EventArgs e)
{
    MouseEventArgs e2 = (MouseEventArgs) e;
    MessageBox.Show(string.Format("X: {0} Y: {1}", e2.X, e2.Y));
}

以上是关于如何获得Click的位置?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Recyclerview Item Click 上打开新片段?

通过按钮更改 viewpager 片段 Click

如何获得 Ctrl+Click 到核素

使用片段着色器在特定位置绘制完美的水平线

如何获得 Listview 的索引?

如何优化C ++代码的以下片段 - 卷中的零交叉