图片框的图像缩放

Posted

技术标签:

【中文标题】图片框的图像缩放【英文标题】: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: 我的版本

对比 原文出处

我想要它:

解决方案

【问题讨论】:

【参考方案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;elsepictureBox1.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;

【讨论】:

以上是关于图片框的图像缩放的主要内容,如果未能解决你的问题,请参考以下文章

快速框选图像的某一区域并进行缩放展示

图片处理-opencv-3.图像缩放、旋转、翻转、平移

如何用DELPHI对JPG等图像进行缩放?

Delphi 图像比例缩放问题 高手来啊

Delphi 图像比例缩放问题 高手来啊

如何缩放并排放置的两个图像?