C#光标位置不在表格中的正确位置

时间:2015-11-18 01:27:04

标签: c# forms

我正在尝试创建一个位于用户点击位置的广场。我将pSize,pX和pY作为变量来表示方形的位置和大小。但是当我点击表格时,正方形是鼠标点击的X和Y坐标中的至少70个像素。我做了(这是表单点击功能):

pX = Cursor.Position.X;
pY = Cursor.Position.Y;

Graphics g = this.CreateGraphics();
SolidBrush brush = new SolidBrush(Color.Black);

g.FillRectangle(brush, pX, pY, pSize, pSize);

以下是正在发生的事情的图片:

屏幕截图并未显示我的光标,但它位于左上角。我还注意到,每次启动程序时,正方形的偏移量都会发生变化,所以这次它相对较远,而下一次它在两个轴上的距离只有25个像素。

有人能告诉我我做错了什么和/或我能做些什么吗?感谢。

2 个答案:

答案 0 :(得分:1)

您目前正在获取 Cursor 位置。哪个是相对于屏幕,这就是为什么当您移动表单时它是一个不同的偏移量。

要获得相对于表单的位置,您需要使用鼠标单击位置(听起来类似于欺骗人的方式)。

您需要确保Click事件引发MouseEventHandler:

this.MouseClick += new System.Windows.Forms.MouseEventHandler(this.DrawSquare);

然后你需要从事件处理程序中获取协调员:

    private void DrawSquare(object sender, MouseEventArgs e)
    {
        int pX = e.X;
        int pY = e.Y;

        int pSize = 10;
        Graphics g = this.CreateGraphics();
        SolidBrush brush = new SolidBrush(Color.Black);

        g.FillRectangle(brush, pX, pY, pSize, pSize);
    }

答案 1 :(得分:0)

我认为您不需要光标位置,而是需要点击位置。 试试这个:

    private void Form2_MouseClick(object sender, MouseEventArgs e)
    {
        int pX = e.X;
        int pY = e.Y;

        Graphics g = this.CreateGraphics();
        SolidBrush brush = new SolidBrush(Color.Black);

        g.FillRectangle(brush, pX, pY, 10, 10);//Size just for testing purposes
    }