簡體   English   中英

Picturebox位圖縮放

[英]Picturebox Bitmap Scaling

我有一個PictureboxPicturebox可以在其中顯示的Bitmaps 與其他位置相比,位圖的相對大小對用戶來說很重要。 他們需要能夠看到一個圖像比另一個圖像更小或更大。 位圖也必須完全適合圖片框,並且無法調整圖片框的大小。

當簡單地在巨大的圖片框中顯示未縮放的位圖時,位圖的相對大小很容易看到,但是當試圖將它們放在一個小盒子中並且必須縮小它們時我的問題就開始了。

當您使用Stretch PictureBoxSizeMode ,由於Bitmaps的非特定大小,圖像有時會顯得扭曲,然后它們會被拉伸以填充整個框,但是Stretch sizemod最接近我需要的類型。

沒有其他尺寸模式適合我的需要所以我現在知道我需要創建一個函數來調整Bitmap的大小,這是我嘗試的開始,直到我意識到我的方向完全錯誤,這里返回的圖像沒有保留”。

    private Bitmap ResizeBitmap(Bitmap img)
    {
        int newWidth = 0;
        int newHeight = 0;
        double imgRatio;

        if (img.Width > img.Height)
        {
            imgRatio = ((double)img.Height / (double)img.Width) * 100;

            newWidth = pictureBox.Width;

            newHeight = (int)(((double)newWidth / 100) * imgRatio);
        }
        else
        {
            imgRatio = ((double)img.Width / (double)img.Height) * 100;

            newHeight = pictureBox.Height;

            newWidth = (int)(((double)newHeight / 100) * imgRatio);
        }

        Bitmap newImg = new Bitmap(newWidth, newHeight);

        using (Graphics g = Graphics.FromImage(newImg))
            g.DrawImage(img, 0, 0, newWidth, newHeight);

        return newImg;
    }

我一直盯着屏幕看了一會兒,目前我不知道做縮放的數學,我希望有人可以指出我正確的方向。 現在差不多凌晨4點,所以也許我的大腦並沒有抓住一些簡單的概念。

將PictureBoxSizeMode設置為Zoom 這保持了縱橫比。

暫無
暫無

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

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