【问题标题】:Images Scaling Down in draw in C#在 C# 中绘制图像按比例缩小
【发布时间】:2013-08-12 20:48:21
【问题描述】:

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

【问题讨论】:

  • 我不知道你在说什么。我必须假设您正在使用 winforms,因为您不知道存在任何其他 UI 框架(否则您将不会使用 winforms 开始),因此认为标记这个问题 [C#] 就足够了。显然不是。我们无法知道您使用的是 winforms、WPF、Silverlight、WinRT、Android、iOS、XBox、Webforms、MVC 等等。
  • @Highcore:我在问题中添加了我正在使用 Windows 表单的问题。我不使用其他图形框架,因为除了 XNA,我不知道如何使用 Ogre 3D 引擎(这两个引擎对这个项目都没有用)、Android(这个应用程序直到这个平台上才开发出来)未来日期)和 HTML5(与 Android 相同的原因)

标签: c# winforms imaging


【解决方案1】:

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

【讨论】:

  • 我没有使用图片框,但这似乎是一个可行的选择。我正在使用带有图像和点的 g.drawImage() 函数
  • 我会说你让自己变得比你需要的更难,哈哈
猜你喜欢
  • 2013-12-13
  • 1970-01-01
  • 1970-01-01
  • 2015-07-03
  • 2018-06-12
  • 2016-05-23
  • 2011-06-03
  • 2016-09-15
  • 1970-01-01
相关资源
最近更新 更多