图片框的图像缩放

30

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

我有一个大小固定的PictureBox,例如宽度为800px,高度为600px。

我将不同大小的图片加载到该PictureBox中,其中包括小图片(400x400)和大图片(800+ x 600+)。

如果图片超出了PictureBox的大小,它们会被调整大小。但是,它们总是缩放到PictureBox的最大宽度和高度。因此,纵横比例被破坏了。

有人能帮忙识别/解决问题吗?

类:

Form1.cs

ImageHandling.cs(已注释)

ImageUtilities.cs

示例:

问题1:
我的版本
enter image description here 与原始来源比较
enter image description here

问题2:
我的版本
enter image description here 与原始来源比较
enter image description here

解决方案:

解决方案
enter image description here

2个回答

61

1
现在它可以工作了,谢谢!我移除了我的调整大小方法,这样它就可以工作了。但是如果我的图片小于picturebox,则图片不会是原始大小。有什么想法吗? - pila
所以,你需要的是仅在图像大于 picturebox 时调整其大小,并在其小于该大小时保持不变? - Forte L.
当我想要加载的图片比我的图片框小时,它会像SizeMode所说的那样“缩放”,但我不想缩放它。我想通过保持纵横比来以原始大小显示它。 - pila
4
如果你想要实现这个功能,你可能需要像这样做:if(image.Width < pictureBox1.Width && image.Height < pictureBox1.Height){pictureBox1.SizeMode = PictureBoxSizeMode.Normal;}else{pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;} - Forte L.

0

我通过在PictureBox的调整大小方法中重置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;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接