DrawLine()和Cursor.Position没有显示相同的坐标

时间:2015-03-09 09:59:52

标签: c# winforms

我有一个Windows表单应用程序。当我按下Draw按钮时,它会画一条线:

private void button1_Click(object sender, EventArgs e)
    {


        projectilePathPen = new Pen(Color.Black, 2);
        projectilePathGraphics.DrawLine(projectilePathPen, 150, 150, 450, 150);
}

我有一个表格的鼠标移动事件(获取当前鼠标的坐标):

private void panel1_MouseMove(object sender, MouseEventArgs e)
        { 

        this.Cursor = Cursors.Cross;

        int actualX, actualY;

        actualX = Cursor.Position.X - 150;
        actualY = 150 - Cursor.Position.Y;

        labelX.Text = "Actual X: " +actualX.ToString();
        labelY.Text = "Actual Y: " + actualY.ToString();
    }

Whenerever我放置了这个光标,它给了我错误的值。我把它放在刚开始画线的开头,它没有按照预期的那样给出(0,0)。

1 个答案:

答案 0 :(得分:1)

替换这些行:

actualX = Cursor.Position.X - 150;
actualY = 150 - Cursor.Position.Y;

用这些:

actualX = e.X - 150;
actualY = 150 - e.Y;

e.Xe.Y为您提供光标相对于panel1的本地位置,而Cursor.Postion是光标在屏幕上的全局位置。