PictureBox正在切割图像的一部分

时间:2013-05-15 12:01:48

标签: c# winforms picturebox

所以我在这个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

P.S

这是原始照片:

landscape image

这就是图片框在右侧切割它的方式(从原始图像中寻找灌木丛 - 它们已经消失了)

cut off image

2 个答案:

答案 0 :(得分:0)

您只需将PictureBoxSizeMode的{​​{1}}设置为:

即可
pictureBox

查看here了解更多详情。

答案 1 :(得分:0)

这很难说,但看看图片看起来好像PictureBox只是设置为SizeMode的默认Normal

  

正常 - 图像位于左上角   图片框。如果图像大于PictureBox,则剪裁图像   它包含在。

仔细检查并确保将SizeMode设置为Zoom并且您不会以某种方式通过代码更改此属性。