调整PictureBox中的位图大小

时间:2018-01-12 21:04:56

标签: c# winforms

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

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;
}

MainGrid是PictureBox,我想放大。

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

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

如何使其平滑变焦?

1 个答案:

答案 0 :(得分:0)

好的,最后我想出来...... 我需要的是切掉我的位图最终代码是&gt;

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;