我有一个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
包含正确的点。
任何帮助/提示都非常有用!