项目场景:
自己画了一个界面,用于显示消息确认,在DockPanel中的TextBlock来显示具体消息。
问题描述
当界面中的Text内容(自动换行)过长时,界面高度自动转换,最下方出现一条黑线,如下:(Win11 Win10)
在这里插入图片描述
原因分析:
当需要显示的Message较长时,窗口自动调整高度时, 似乎是一个渲染工作, wpf在呈现时有抗锯齿效果,会把上下两边的像素点同时着色导致边缘模糊,界面显示一条较粗的黑线
资料参考:https://www.jb51.cc/csharp/243329.html
https://blog.csdn.net/nodeman/article/details/80653757
解决方案:
可使用SnapsToDevicePixels或UseLayoutRounding解决
①UseLayoutRounding 属性
获取或设置一个值,该值确定对象及其可视化子树的呈现是否应使用将呈现与整像素对齐的舍入行为。
(一般在容器元素上设置。在布局期间发发生)
UserLayoutRounding默认为False,导致控件布局相对屏幕若不是整数则不会四舍五入,导致边缘模糊。
②SnapsToDevicePixels 属性
获取或设置一个值,该值决定呈现元素期间是否应使用设备特定的像素设置。这是一个依赖项属性。
(一般在根元素设置。在渲染时发生)
SnapsToDevicePixels默认为false, 为true可以让元素像素级对齐。
资料参考:https://www.bbsmax.com/A/rV57KLW95P/