用相同的鼠标位置移动矩形

本文关键字:移动 位置 鼠标 | 更新日期: 2023-09-27 18:16:00

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

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();
    }
}

用相同的鼠标位置移动矩形

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

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

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(); 
    } 
}