Я хочу реализовать панорамирование PictureBox в C # winforms. У меня есть панель, на которой для свойства autoScroll установлено значение true. Внутри панели у меня есть pictureBox, для которого sizeMode установлен в autoSize. На картинке я слушаю события мыши, вот так:
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
dragging = true;
start = new Point(e.Location.X + pictureBox1.Location.X, e.Location.Y + pictureBox1.Location.Y);
}
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (dragging)
{
Debug.WriteLine("mousemove X: " + e.X + " Y: " + e.Y);
pictureBox1.Location = new Point(start.X - e.Location.X, start.Y - e.Location.Y);
this.Refresh();
}
}
private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
Debug.WriteLine("mouseup");
dragging = false;
}
Проблема в том, что после того, как я отпущу кнопку, что-то продолжает вызывать события mouseMove, и изображение очень медленно панорамируется гораздо больше, чем должно быть. Если я перетаскиваю изображение на несколько пикселей (возможно, на 2 или 3), то после отпускания кнопки изображение панорамируется в течение нескольких секунд, и получается:
перемещение мыши X: 66 Y: 37
перемещение мыши X: 66 Y: 38
перемещение мыши X: 66 Y: 39
перемещение мыши X: 66 Y: 40
перемещение мыши X: 66 Y: 41
перемещение мыши X: 66 Y: 42
перемещение мыши X: 66 Y: 43
перемещение мыши X: 66 Y: 44
перемещение мыши X: 66 Y: 45
перемещение мыши X: 66 Y: 46
a.s.o ....