使用最近邻大小调整模式调整大小 System.Controls.Image
Resizing System.Controls.Image with Nearest Neighbour resizing mode
我正在尝试制作一款使用像素艺术风格的游戏。我已经创建了我的资产并将它们用作资源,这些资源作为 System.Controls.Image 对象添加到 window 中。
在设计器中,它们总是显得太小。结果,当我调整它们的大小时,由于对它们应用了某种双三次插值,它们变得有些模糊。
我已经设法通过避免调整大小来避免这种情况;我在设计器中调整大小以找出合适的大小,然后对原始图像使用最近邻调整大小(使用外部程序)以将源文件调整为该大小。然后我更新项目中的图像并删除任何调整大小,因此将其保留为原始大小,即无插值。
如您所想,这是一个相当乏味的过程。我在调整大小时研究了插值选择,但我能找到的大多数答案都与 System.Drawing.Image 有关,而不是 System.Controls.Image。我觉得任何这样的解决方案(如果采用的话)都会非常混乱并且涉及多个(并且可能是不必要的)conversions/casts。
有什么方法可以让最近的邻居在 System.Controls.Image 上调整大小?
要设置调整大小模式,您需要为可视化树设置RenderOptions.BitmapScalingMode="NearestNeighbor"
选项。您可以在 window 级别进行设置。
为了解决更大的问题,似乎首先导致您的图像被缩放:
- 确保您在图像控件上设置
Stretch="None"
选项,
- 确保您使用的是 SnapsToDeveicePixels 或布局舍入
- 最后,如果一切都失败了,请明确设置图像的宽度和高度。
我也遇到过 运行 图像文件的 DPI 未设置为(我相信)90 的情况,导致渲染器应用缩放。
我正在尝试制作一款使用像素艺术风格的游戏。我已经创建了我的资产并将它们用作资源,这些资源作为 System.Controls.Image 对象添加到 window 中。
在设计器中,它们总是显得太小。结果,当我调整它们的大小时,由于对它们应用了某种双三次插值,它们变得有些模糊。
我已经设法通过避免调整大小来避免这种情况;我在设计器中调整大小以找出合适的大小,然后对原始图像使用最近邻调整大小(使用外部程序)以将源文件调整为该大小。然后我更新项目中的图像并删除任何调整大小,因此将其保留为原始大小,即无插值。
如您所想,这是一个相当乏味的过程。我在调整大小时研究了插值选择,但我能找到的大多数答案都与 System.Drawing.Image 有关,而不是 System.Controls.Image。我觉得任何这样的解决方案(如果采用的话)都会非常混乱并且涉及多个(并且可能是不必要的)conversions/casts。
有什么方法可以让最近的邻居在 System.Controls.Image 上调整大小?
要设置调整大小模式,您需要为可视化树设置RenderOptions.BitmapScalingMode="NearestNeighbor"
选项。您可以在 window 级别进行设置。
为了解决更大的问题,似乎首先导致您的图像被缩放:
- 确保您在图像控件上设置
Stretch="None"
选项, - 确保您使用的是 SnapsToDeveicePixels 或布局舍入
- 最后,如果一切都失败了,请明确设置图像的宽度和高度。
我也遇到过 运行 图像文件的 DPI 未设置为(我相信)90 的情况,导致渲染器应用缩放。