是否应该始终使用 UseLayoutRounding 和 SnapsToDevicePixels?

8

在我的另一个(无关的)问题中,@Meleak在他的答案中散布了SnapsToDevicePixels,我发现它用于使事物看起来更加清晰。那么问题来了,既然它可以让事物看起来更好,为什么不在每个地方使用它呢?或者说,我需要注意哪些缺点?在什么情况下应该/不应该使用它?

1个回答

2
这段文本的翻译如下:

这样做会禁用亚像素渲染,它可以提高清晰度,但也会破坏WPF的分辨率独立性。这可能是好事或坏事,具体取决于您在应用程序中进行的图形操作。

请参阅MSDN上的像素对齐以获取完整的说明。


24
它禁用了亚像素的定位,而不是渲染(描边路径仍将使用抗锯齿进行渲染)。它只是将组件边界四舍五入,使它们具有整数坐标和大小。它也不会破坏分辨率独立性,因为四舍五入是在将设备独立值转换为设备空间之后进行的。 - Nicolas Repiquet
@Nicolas,当所有边界都对齐到实际像素值时,使用子像素进行渲染会更加困难...你的描边路径示例可以工作,但是例如直线和填充就不行了。此外,由于分辨率独立性围绕着独立于像素网格,我无法看出在对齐到像素网格时如何实现它。即使在坐标系统转换后执行四舍五入,不同设备之间的渲染可能仍然存在小差异。 - Frédéric Hamidi
7
是的,会有一些小差别,但是你的应用程序在96或300 dpi下大致看起来是相同的。这就是我所说的“分辨率独立性”。 - Nicolas Repiquet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接