0

好吧,伙计们,这个项目的最后一点我会寻求帮助,我保证。所以我去加载图像,工作正常,但是我注意到加载时图像的尺寸已经按 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 窗体应用程序,而不是另一个图形框架。提前致谢 :)

4

1 回答 1

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),它将在您的第一个函数中找到的图像的路径、宽度和高度存储到一个列表中,然后就像以前一样,当用户单击以查看您设置的图像时PictureBox的宽高,然后调用LoadAsync(path)方法获取图片。那么您不会一次将所有图像存储在内存中,就像您需要它们一样,因为它看起来不需要从图像到图像的大量快速跳转。

于 2013-08-12T21:32:26.087 回答