我需要相对于矩形移动(绘制)具有相同鼠标位置的矩形。有一个代码,鼠标位于矩形的中间。
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();
}
}
答案 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();
}
}