0

そこで、この MDI フォーム アプリケーションで作業し、ピクチャ ボックスを使用して、openFileDialog から選択したピクチャを表示します。しかし、今日、あるユーザーから、写真が横長の場合 (1920x1200 でテストを行いました)、実際には写真の右端がカットされるという事実について不満がありました。もちろん、ピクチャ ボックスの幅はかなり小さい (440px) ですが、テストに使用した画像でも、わずかにカットされています。ただし、これは受け入れられないため、画像がどんなに大きくても、画像全体がピクチャボックスのフレームに収まるようにしたいと考えています。

写真を表示するための私のコードは次のとおりです。

 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.

PS

これは元の写真です:

風景画像

そして、これはピクチャボックスが右側でそれをカットする方法です (元の画像から茂みを探してください - それらはなくなっています)

イメージを切り取る

4

2 に答える 2

0

わかりにくいですが、画像を見ると、PictureBox が単純にデフォルトSizeModeの に設定されているように見えNormalます。

標準 - 画像は PictureBox の左上隅に配置されます。画像が含まれている PictureBox よりも大きい場合、画像は切り取られます。

SizeModeが に設定されてZoomいることと、何らかの理由でこのプロパティをコードで変更していないことを再確認してください。

于 2013-05-15T20:31:52.110 に答える
0

PictureBoxSizeMode次のように簡単に設定できますpictureBox

pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;

詳しくはこちらをご覧ください。

于 2013-05-15T12:19:26.043 に答える