在图片框中调整位图的大小

  • 本文关键字:位图 调整 c# winforms
  • 更新时间 :
  • 英文 :


我正在尝试在图片框中正确放大/缩小图像。我有这个代码。

private Image GridMap;
private double ZoomFactor = 1;
protected override void OnMouseWheel(MouseEventArgs e)
{
    if (e.Delta > 0)
    {
        ZoomFactor*=1.2;
    }
    else if (e.Delta < 0 && ZoomFactor >1 )
    {
        ZoomFactor /= 1.2;
    }
    Size newSize = new Size((int)(GridMap.Width * ZoomFactor), (int)(GridMap.Height * ZoomFactor));
    Bitmap bmp = new Bitmap(GridMap, newSize);
    MainGrid.Image = bmp;
}

其中主网格是我想缩放的图片框。

这段代码有效,但滚动后很慢 我等待 1-2 秒,然后它显示缩放后的图片。 带有 (800,800( 图像。这是非常慢的。

我想我知道为什么。它的复制调整了位图的大小,而不是仅使用旧位图的一部分,但我不知道该怎么做。

如何使其平滑缩放?

好的 最后我想通了...我需要的是剪掉我的位图最终代码的一部分>

protected override void OnMouseWheel(MouseEventArgs e)
    {
        if (e.Delta > 0 && ZoomFactor >MaxZoom)
        {
            ZoomFactor-=0.01;
        }
        else if (e.Delta < 0 && ZoomFactor <1 )
        {
            ZoomFactor += 0.01;
        }
        Rectangle srcRect = new Rectangle(0, 0, (int)(GridMap.Width * ZoomFactor), (int)(GridMap.Height * ZoomFactor));
        Bitmap cropped = ((Bitmap)GridMap).Clone(srcRect, MainGrid.Image.PixelFormat);
        MainGrid.Image = cropped;
    }

并加上PictureBox的启动

this.MainGrid.SizeMode = PictureBoxSizeMode.Zoom;

最新更新