图像在C#中按比例缩小

本文关键字:按比例 缩小 图像 | 更新日期: 2023-09-27 18:27:27

好了,伙计们,这个项目的最后一点,我保证会寻求帮助。所以我去加载图像,效果很好,但在加载时我注意到图像的尺寸在y方向上已经缩小到300(都是433的常数值),并从原始宽度向上或向下缩小到600。我正在使用以下方法加载

foreach (string file in Directory.EnumerateFiles(imagePath, "*.JPG"))
{
    Image contents = Image.FromFile(file);
    treesImage[count] = contents;
    count++;
}

这是我加载后的结果图像。

https://i.stack.imgur.com/Q40kK.png

正如你所看到的,红色矩形下方的图像是非常小的

如有任何帮助,我们将不胜感激。如果你需要更多信息,请在下面发布,我会确保尽快用相关信息编辑原始问题。

编辑:由于我自己的原因,我使用的是一个简单的windows窗体应用程序,而不是另一个图形框架。提前感谢:)

图像在C#中按比例缩小

我假设您正在使用PictureBox控件来显示图像。

当有人从地图中选择一棵树时,您显然将PictureBox Image属性设置为数组中索引引用的图像对象。使用Image对象设置PictureBox控件的ClientSize。

...
Image img = treesImage[idx];
MyPictureBox.SizeMode = PictureBoxSizeMode.Normal;
MyPictureBox.ClientSize = new Size(img.Width,img.Height);
MyPictureBox.Image = img;
...

或者,您可以为PictureBox定义一个大小,并通过以声明方式将控件SizeMode属性设置为StretchImage来强制将所有图像缩放到该大小。

我建议您创建一个简单的类(例如MyImageInfo),将在第一个函数中找到的图像的Path、Width和Height存储到列表中,然后像以前一样,当用户单击查看图像时,您设置PictureBox的宽度和高度,然后调用LoadAsync(Path)方法来获取图像。然后你并不是一次把所有的图像都存储在内存中,就像你需要的那样,因为这看起来不需要从一个图像快速跳转到另一个图像。