WPF中的UseLayoutRounding和SnapsToDevicePixels
最近在调试项目中的UI时发现几个诡异问题:
-
Grid容器里的GridSplitter设置粗细一样, 但截屏放大后发现线条不一样粗并且明暗不一致,导致打印出来有问题。
-
自定义控件的边缘在某些窗体中显示模糊。
导致以上问题的原因是:
1)UserLayoutRounding为False,导致控件布局相对屏幕若不是整数则不会四舍五入,导致边缘模糊。
2)SnapsToDevicePixels默认为false, 为true可以让元素像素级对齐。
xml
<Grid UseLayoutRounding="True" SnapsToDevicePixels="True">
UIElement.UseLayoutRounding 属性
获取或设置一个值,该值确定对象及其可视化子树的呈现是否应使用将呈现与整像素对齐的舍入行为。(一般在容器元素上设置, 发生在Measure&Arrange期间)