图片框的图像缩放
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;
【讨论】:
以上是关于图片框的图像缩放的主要内容,如果未能解决你的问题,请参考以下文章