我的应用程序需要控制显示位图(jpg),但也可以缩放和平移它们(所以如果你按下鼠标按钮就可以'移动'框内的缩放图片)
我所做的是将面板放在Form上,然后将pictureBox放在面板内(锚定顶部,左侧) 因此,如果我需要缩放它,我只是执行缩放按钮事件下面的代码:
private void ZommInOut(bool zoom) {
int zoomRatio = 10; // percent
int widthZoom = pBox.Width * zoomRatio /100;
int heightZoom = pBox.Height * zoomRatio /100;
if (zoom) {
widthZoom *= -1;
heightZoom *= -1;
}
pBox.Width += widthZoom;
pBox.Height += heightZoom;
}
工作得很好。图像被缩放,面板显示滚动条 - 所以我有简单的平移功能。
我缺少的是使用鼠标进行平移的可能性 - 我想向任意方向拖动图片以查看图片的其他部分(例如Acrobat Reader)。
我已经找到了使用 MouseMove 事件并以编程方式更改滚动条的方法,但我无法管理它。
有任何建议吗?
答案 0 :(得分:3)
您需要在MouseMove事件中设置AutoScrollPosition
属性。
您需要跟踪MouseDown事件的位置并使用偏移量更新AutoScrollPosition。
答案 1 :(得分:0)
我建议使用Graphics.DrawImage创建一个控件并绘制图像的一部分 - 这样你就可以控制图像的缩放方式(三线等),并且它也会使用更少的内存。您可以覆盖OnMouseMove以获得mosue运动