图像缩小在C#中绘制

时间:2013-08-12 20:48:22

标签: c# winforms imaging

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

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

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

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

如您所见,红色矩形下方的图像非常小

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

编辑:我使用的是一个简单的Windows窗体应用程序而不是另一个图形框架,这是出于我自己的原因。 在此先感谢:)

1 个答案:

答案 0 :(得分:0)

我假设您正在使用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)方法来获取图像。那么你不是一次性将所有图像存储在内存中,就像你需要它们一样,因为它看起来不需要从图像到图像的快速跳跃。