簡體   English   中英

當圖片為橫向時,PictureBox會裁剪圖像的一部分

[英]PictureBox is cutting part of the image when it's landscape

因此,我在此MDI表單應用程序上工作,並使用圖片框顯示從openFileDialog中選擇的圖片。 但是今天,一個用戶抱怨這樣一個事實:如果圖片是橫向的(我用1920x1200進行了測試),它確實會切出圖片的右端。 當然,圖片框的寬度要小得多(440像素),但是即使對於我用於測試的圖像,它也只是剪了一點點。 但是,這是不可接受的,因此無論圖像有多大,我都希望使整個圖像適合畫框。

這是我顯示圖片的代碼:

 OpenFileDialog openFileDialog1 = new OpenFileDialog();

            openFileDialog1.Filter = "All files (*.jpg)|" + prefixFilter + "*.jpg";
            openFileDialog1.FileName = prefixFilter; 
            openFileDialog1.Title = "Select file";
            openFileDialog1.InitialDirectory = DefaultOpenPath;
            openFileDialog1.FilterIndex = 1;
            openFileDialog1.RestoreDirectory = true;

            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    IsImageOpened = true;
                    selectedFile = openFileDialog1.FileName;
                    selectedFileName = openFileDialog1.SafeFileName;

                    using (var temp = new Bitmap(openFileDialog1.FileName))
                    {
                        pictureBox1.Image = new Bitmap(temp);
                    }

                    int imageWidth = pictureBox1.Image.Width;
                    int picBoxWidth = pictureBox1.Width;

                    if (imageWidth != 0 && picBoxWidth > imageWidth)
                    {
                        pictureBox1.Width = imageWidth;
                    }
                    else
                    {
                        pictureBox1.Width = defaultPicBoxWidth;
                    }
                }
                catch (Exception ex)
                {
                    logger.Error(ex.ToString());
                    IsImageOpened = false;
                    MessageBox.Show("Error loading image!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }

在這里,我使用圖像寬度,但是出於不同的目的,我不知道我是否可以使用此代碼,或者是否有一些標准方法來處理此問題。

我的圖片框也有SizeMode - Zoom

聚苯乙烯

這是原始圖片:

風景圖片

這就是圖片框在右側切割的方式(從原始圖像中尋找灌木叢-它們已經消失了)

切斷圖像

您可以簡單地將pictureBox PictureBoxSizeMode設置為:

pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;

在這里查看更多詳細信息。

很難說,但是看圖片時,確實將PictureBox設置為Normal的默認SizeMode

正常-圖像放置在PictureBox的左上角。 如果圖像大於其中包含的PictureBox,則會對其進行裁剪。

仔細檢查並確保將SizeMode設置為Zoom ,並且以某種方式未通過代碼更改此屬性。

暫無
暫無

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

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