代码之家  ›  专栏  ›  技术社区  ›  Maciej

带缩放和平移功能的Windows窗体图片框

  •  1
  • Maciej  · 技术社区  · 16 年前

    我的应用程序需要控制显示位图(JPG),但也需要缩放和平移它们(因此,如果按鼠标按钮,可以在帧内“移动”已缩放的图片)

    我做的是将面板放在窗体上,然后将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)。
    我一直在寻找使用的方法 鼠标移动 事件和按程序更改滚动条,但我无法处理。

    有什么建议吗?

    2 回复  |  直到 16 年前
        1
  •  3
  •   SLaks    16 年前

    你需要设置 AutoScrollPosition mousemove事件中的属性。

    您需要跟踪mousedown事件的位置,并使用偏移量更新autoscrollsposition。

        2
  •  0
  •   James Westgate    16 年前

    我建议您使用graphics.drawimage创建一个控件并绘制图像的一部分-这样您就可以控制图像的缩放方式(三线等),并且它也将使用较少的内存。你可以覆盖onmousemove来获得mosue动作

    推荐文章