使用最近邻大小调整模式

时间:2016-09-23 18:37:18

标签: c# wpf image resize controls

我正在尝试制作一款使用像素艺术风格的游戏。我创建了我的资源并将它们用作资源,这些资源作为System.Controls.Image对象添加到窗口中。

在设计师中,他们总是变得太小。结果,当我调整它们的大小时,由于某种双三次插值被应用到它们上,它们变得有些模糊。

我设法通过避免调整大小来避免这种情况;我在设计器中调整大小以找出合适的大小,然后在原始图像上使用最近邻居调整大小(使用外部程序)以使源文件达到该大小。然后我更新项目中的图像并删除任何调整大小,因此保持原始大小,即无插值。

你可以想象,这是一个相当繁琐的过程。我在调整大小期间查看了插值选择,但我发现的大多数答案都与System.Drawing.Image有关,而与System.Controls.Image无关。我觉得任何这样的解决方案(如果适应的话)都会非常混乱并涉及多次(也许是不必要的)转换/演员表。

有没有办法让最近邻居在System.Controls.Image上调整大小?

1 个答案:

答案 0 :(得分:1)

要设置调整大小模式,您需要为可视树设置RenderOptions.BitmapScalingMode="NearestNeighbor"选项。您可以在窗口级别设置它。

为了解决这个更大的问题,似乎有些事情导致您的图像首先缩放:

  • 确保在Image控件上设置Stretch="None"选项,
  • 确保您使用的是SnapsToDeveicePixels或布局舍入
  • 最后,如果所有其他方法都失败了,请明确设置图片的宽度和高度。

我还遇到了图像文件的DPI未被设置为(我相信)90的情况,导致渲染器应用缩放。