移动矩形与矩形相同的鼠标位置?

时间:2011-11-29 14:21:00

标签: c#

我需要相对于矩形移动(绘制)具有相同鼠标位置的矩形。有一个代码,鼠标位于矩形的中间。

private void pictureBox1_MouseMove_1(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Left)
    {
        rect.X = e.X - (rect.Width/2);
        rect.Y = e.Y - (rect.Height/2);

        rect.Width = rect.Width;
        rect.Height = rect.Height;
        pictureBox1.Invalidate();
    }
}

1 个答案:

答案 0 :(得分:0)

您需要将鼠标位置存储在MouseDown处理程序中,并考虑该偏移而不是仅将其居中。

假设您在MouseDown中存储坐标(相对于rect):

private void pictureBox1_MouseMove_1(object sender, MouseEventArgs e) 
{ 
    if (e.Button == MouseButtons.Left) 
    { 
        rect.X = e.X - downPos.X; 
        rect.Y = e.Y - downPos.Y; 

        rect.Width = rect.Width; 
        rect.Height = rect.Height; 
        pictureBox1.Invalidate(); 
    } 
}