CSh*_*per 19
其原因是抗锯齿系统,如果它不与物理设备像素对齐,则将线扩展到多个像素上.
WPF独立于resoultion.这意味着您以英寸为单位指定用户界面元素的大小,而不是以像素为单位.WPF中的逻辑单位是1/96英寸.选择此比例,因为大多数屏幕的分辨率为96dpi.因此在大多数情况下,1个逻辑单元匹配1个物理像素.但是,如果屏幕分辨率发生变化,则此规则不再有效.
所有WPF控件都提供属性SnapsToDevicePixels.如果设置为true,则控件确保在物理设备像素上精确绘制所有边.但遗憾的是,此功能仅适用于控制级别.
快速解决:
在从根到模糊控件的每个容器上使用这些选项
UseLayoutRounding="True"
RenderOptions.BitmapScalingMode="NearestNeighbor"
SnapsToDevicePixels="True"
RenderOptions.ClearTypeHint="Enabled"
Run Code Online (Sandbox Code Playgroud)
解释:
UseLayoutRounding=true修复了子像素布局问题。它们经常发生,因为例如“效果”将控件的大小调整为像素之间的某个值。
RenderOptions.BitmapScalingMode=NearestNeighbor修复了位图的模糊采样。当使用效果或其他技术时,会使用位图。当它们重新应用到容器或控件时,它们可能最终位于像素之间,因此会插入位图的像素。
SnapsToDevicePixels="True"修复在像素之间渲染的垂直和水平多边形、线条和矩形
RenderOptions.ClearTypeHint="Enabled"重新启用文本上的 ClearType。它很容易通过效果或渲染器不知道文本的确切背景而被禁用。
您应该在每个容器上使用它,因为有时,例如通过数据模板,这些选项会再次默认用于子控件。
| 归档时间: |
|
| 查看次数: |
4786 次 |
| 最近记录: |