Windows Forms的PictureBox具有缩放和平移功能

时间:2010-04-09 14:01:33

标签: c# winforms .net-3.5 bitmap picturebox

我的应用程序需要控制显示位图(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 事件并以编程方式更改滚动条的方法,但我无法管理它。

有任何建议吗?

2 个答案:

答案 0 :(得分:3)

您需要在MouseMove事件中设置AutoScrollPosition属性。

您需要跟踪MouseDown事件的位置并使用偏移量更新AutoScrollPosition。

答案 1 :(得分:0)

我建议使用Graphics.DrawImage创建一个控件并绘制图像的一部分 - 这样你就可以控制图像的缩放方式(三线等),并且它也会使用更少的内存。您可以覆盖OnMouseMove以获得mosue运动