【问题标题】:Non-Smooth Upscaling with graphics.DrawImage使用 graphics.DrawImage 进行非平滑升级
【发布时间】:2011-08-10 03:16:30
【问题描述】:

我正在网格中绘制一些图像。图片保存为 16x16px pngs。

不过,我后来决定将网格的大小增加到 32x32px。

当我使用以下代码时:

graphics.DrawImage(image, Xdraw, Ydraw, 32, 32);

其中 image 是从 png 加载的图像,而 Xdraw 和 Ydraw 是在上方某处确定的左上角。

图像有点模糊,因为 .DrawImage 使用双三次(或其他一些平滑函数)来放大图像。我希望它关闭平滑,这样我就可以保留硬边。

这可能吗?

【问题讨论】:

标签: c# .net image graphics


【解决方案1】:

我认为您应该更改图形的 InterpolationMode 属性。还可以查看 Graphics 类的 SmoothingModeCompositingQuality

【讨论】:

  • 对未来试图解决此问题的任何人的一般提示:如果您正在使用 NearestNeighbor 并且您的图像仍然模糊 - 请确保您以 1:1 的比例查看它。您用于预览的软件中的放大很可能会使其模糊(锯齿)。
【解决方案2】:

有两件事可能有效。

  • 尝试使用 Graphics 对象上的 InterpolationMode 属性。不幸的是,我不知道哪个设置比默认设置更好。
  • 尝试在您的 Graphics 对象上使用 ScaleTransform(完成后记得将其重置)。

【讨论】:

  • 该死,Anton 在插值模式下击败了我 ;-) 不过,ScaleTransform 可能会工作......
  • 你有正确的答案,只是迟到了“接受”,但有一个赞成的 cookie。
  • 好吧,我没有插入链接... ;-) 无论如何,感谢您的支持。根据您要查找的输出,ScaleTransform 可能比 InterpolationMode 工作得更好,尤其是当您查看不均匀的比例时,例如 2.3:1 而不是 2:1。
  • 我会在未来的转换中考虑到这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-01
  • 1970-01-01
相关资源
最近更新 更多