【问题标题】:image Scaling of picture box图片框的图像缩放
【发布时间】:2012-09-20 17:01:12
【问题描述】:

我在 C# 中遇到了图像缩放问题。

我有一个给定尺寸的图片框:例如宽度 = 800 像素高度 = 600 像素

我正在将不同的图像加载到该图片框中,小的 (400x400) 和大的 (800+ x 600+)

如果我的图片不适合盒子,它们会被调整大小。但它们总是调整为 PictureBox 的最大宽度和高度。所以纵横比被破坏了

任何人都可以帮助识别/解决问题吗?

类:

Form1.cs

ImageHandling.cs(已注释掉)

ImageUtilities.cs

示例:

问题 1: 我的版本

对比 原文来源

问题 2:
我的版本

对比 原文出处

我想要它:

解决方案

【问题讨论】:

    标签: c# image image-scaling


    【解决方案1】:
    this.PictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
    

    将该属性设置为您的 PictureBox 并且图像的大小将增加或减小以适应 PictureBox 保持大小比例。

    欲了解更多信息:http://msdn.microsoft.com/en-us/library/system.windows.forms.picturebox.sizemode.aspx

    【讨论】:

    • 现在可以使用了,谢谢!我删除了我的调整大小方法并且它有效。但是如果我的图片小于图片框,则它们不是原始尺寸。有什么想法吗?
    • 那么,您需要的是仅当图像大于图片框时才调整图像大小?如果它更小,则保持尺寸?
    • 当我要加载的图片小于我的图片框时,它会像 SizeMode 所说的那样“缩放”,但我不想缩放它。我想通过保持纵横比以原始尺寸显示它。
    • 那么您可能需要执行以下操作:if(image.Width < pictureBox1.Width && image.Height < pictureBox1.Height){pictureBox1.SizeMode = PictureBoxSizeMode.Normal;}else{pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;}
    【解决方案2】:

    我通过在 PictureBox 的 resize 方法上重置 SizeMode 来处理这个问题。

    这基本上与上面的答案相同,但格式要好得多。

    private void ScaleImage()
    {
      if (pbInfo.Image == null)
        return;
    
      if (pbInfo.Image.Width > pbInfo.Width || pbInfo.Image.Height > pbInfo.Height)
        pbInfo.SizeMode = PictureBoxSizeMode.Zoom;
      else
        pbInfo.SizeMode = PictureBoxSizeMode.Normal;
    }
    

    【讨论】:

      猜你喜欢
      • 2015-12-30
      • 1970-01-01
      • 2013-07-14
      • 1970-01-01
      • 1970-01-01
      • 2021-05-01
      • 2013-10-21
      • 1970-01-01
      相关资源
      最近更新 更多