簡體   English   中英

調整PictureBox中位圖的大小

[英]Resizing bitmap in PictureBox

我正在嘗試正確放大/縮小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)圖片。 這很慢。

我想我知道為什么。 它復制了調整大小的位圖,而不是僅使用舊的位圖,但是我不知道該怎么做。

如何使其平滑縮放?

好的,最后我想出了...我需要切出我的位圖最終代碼的一部分是>

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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM