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