繁体   English   中英

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

[英]C# Cursor Position not in right place in 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个像素。

有人可以告诉我我做错了什么和/或对此我可以做些什么? 谢谢。

您目前正在获得游标职位。 这是相对于屏幕的 ,这就是为什么在移动表单时它具有不同的偏移量的原因。

要获得相对于表单的位置,您需要使用“ 鼠标单击”位置(听起来相似,这就是人们的窍门)。

您需要确保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);
    }

我认为您不需要光标位置,而只需单击位置。 尝试这个:

    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
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM