Как панорамировать изображение внутри PictureBox
У меня есть обычайPictureBox
который может увеличить используяMouseWheel
событие. Теперь я хочу добавить функцию панорамирования. Я имею в виду, когда PictureBox находится в увеличенном состоянии, если пользователь щелкает левой кнопкой мыши и удерживает ее, а затем перемещает мышь, изображение будет перемещаться в пределах окна рисунка.
Вот мой код, но, к сожалению, он не работает! Я не знаю, где искать больше ...
private Point _panStartingPoint = Point.Empty;
private bool _panIsActive;
private void CurveBox_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
Focus();
_panIsActive = true;
_panStartingPoint = e.Location;
}
}
private void CurveBox_MouseUp(object sender, MouseEventArgs e)
{
_panIsActive = false;
}
private void CurveBox_MouseLeave(object sender, EventArgs e)
{
_panIsActive = false;
}
private void CurveBox_MouseMove(object sender, MouseEventArgs e)
{
if(_panIsActive && IsZoomed)
{
var g = CreateGraphics(); //Create graphics from PictureBox
var nx = _panStartingPoint.X + e.X;
var ny = _panStartingPoint.Y + e.Y;
var sourceRectangle = new Rectangle(nx, ny, Image.Width, Image.Height);
g.DrawImage(Image, nx, ny, sourceRectangle, GraphicsUnit.Pixel);
}
}
Я подозреваюMouseMove
событие ... Я не уверен, что что-то происходит в этом событии и / илиnx
а такжеny
действительно содержит правильную точку.
Любые подсказки действительно полезны!