我有一个自定义的PictureBox
控件,可以使用MouseWheel
事件进行缩放。现在我想添加一个平移功能。我的意思是当PictureBox处于放大状态时,如果用户左键单击并保持点击状态,然后移动鼠标,图像将在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
是否包含了正确的坐标点。
非常感谢任何帮助和提示!