【问题标题】:PictureBox is cutting part of the image when it's landscapePictureBox在横向时正在剪切图像的一部分
【发布时间】:2013-05-15 12:01:47
【问题描述】:

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

附言

这是原图:

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

【问题讨论】:

  • 新建项目,添加图片框,重现问题。然后在这里显示代码。如果您无法在新项目中重现它,那么问题显然出在您的代码/ui 设计中的其他地方(某些东西可能覆盖了图片框的右侧)。这不应该发生,它应该与您正在使用的 SizeMode Zoom 一起正常工作。
  • 同意...这不应该通过“缩放”设置来实现。能否发一些完整图片的截图以及如何截取?
  • 现在您可以在编辑后的帖子中看到实际发生的情况。
  • PictureBoxSizeMode.Zoom 应该可以工作。图片的大小增加或减少保持大小比例
  • 简单的解释是PictureBox比表格大。不要忘记打开它的右侧和底部 Anchor。

标签: c# winforms picturebox


【解决方案1】:

您可以简单地将pictureBoxPictureBoxSizeMode 设置为:

pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;

查看here了解更多详情。

【讨论】:

  • 它没有保持纵横比,而且 - 我还是试过了 - 图像的某些部分又被切断了。
【解决方案2】:

这很难说,但看图片确实好像 PictureBox 被简单地设置为默认的 SizeModeNormal

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

仔细检查并确保 SizeMode 设置为 Zoom 并且不知何故您没有通过代码更改此属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-15
    • 2013-09-15
    • 1970-01-01
    • 2012-03-18
    • 2017-09-11
    • 1970-01-01
    • 2017-10-17
    相关资源
    最近更新 更多