1

我的应用程序需要控制显示位图 (jpg),还需要缩放和平移它们(因此,如果您按下鼠标按钮,您可以在框架内“移动”缩放的图片)

我所做的是将面板放在窗体上,然后在面板内放置图片框(锚定顶部,左侧)。
因此,如果我需要缩放它,我只是从缩放按钮事件中执行以下代码:

    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事件并以编程方式更改滚动条的方法,但我无法管理。

有什么建议么)?

4

2 回答 2

3

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

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

于 2010-04-09T14:14:06.803 回答
0

我建议使用 Graphics.DrawImage 创建一个控件并绘制图像的一部分 - 通过这种方式,您可以控制图像的缩放方式(三线性等),并且它也将使用更少的内存。您可以覆盖 OnMouseMove 以获取鼠标移动

于 2010-04-09T14:36:25.313 回答