Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么WPF中的所有内容都很模糊?_Wpf_Clarity - Fatal编程技术网

为什么WPF中的所有内容都很模糊?

为什么WPF中的所有内容都很模糊?,wpf,clarity,Wpf,Clarity,有人能解释为什么WPF中的所有内容都很模糊吗?这是可以修复的吗?原因是抗锯齿系统,如果线条与物理设备像素不对齐,它会将线条扩展到多个像素上 WPF是独立于资源的。这意味着您可以以英寸为单位指定用户界面元素的大小,而不是以像素为单位。WPF中的逻辑单元为1/96英寸。之所以选择此比例,是因为大多数屏幕的分辨率为96dpi。因此,在大多数情况下,1个逻辑单元与1个物理像素匹配。但如果屏幕分辨率发生变化,则此规则不再有效 所有WPF控件都提供一个属性SnapsToDevicePixels。如果设置为t

有人能解释为什么WPF中的所有内容都很模糊吗?这是可以修复的吗?

原因是抗锯齿系统,如果线条与物理设备像素不对齐,它会将线条扩展到多个像素上

WPF是独立于资源的。这意味着您可以以英寸为单位指定用户界面元素的大小,而不是以像素为单位。WPF中的逻辑单元为1/96英寸。之所以选择此比例,是因为大多数屏幕的分辨率为96dpi。因此,在大多数情况下,1个逻辑单元与1个物理像素匹配。但如果屏幕分辨率发生变化,则此规则不再有效

所有WPF控件都提供一个属性
SnapsToDevicePixels
。如果设置为true,控件将确保所有边都精确地绘制在物理设备像素上。但不幸的是,此功能仅在控件级别可用

来源:

快速修复:

在从根目录到模糊控件的每个容器上使用这些选项

        UseLayoutRounding="True"
        RenderOptions.BitmapScalingMode="NearestNeighbor"
        SnapsToDevicePixels="True"
        RenderOptions.ClearTypeHint="Enabled"
说明:

UseLayoutRounding=true修复子像素布局问题。它们经常发生,因为例如效果将控件调整为像素之间的大小

RenderOptions.BitmapScalingMode=最近邻居修复了位图的模糊采样。使用特效或其他技术时使用位图。当它们被重新应用到容器或控件时,它们可能会在像素之间结束,从而对位图的像素进行插值

SnapsToDevicePixels=“True”修复像素之间渲染的垂直和水平多边形、直线和矩形

RenderOptions.cleartyphint=“Enabled”可在文本上重新启用cleartype。它很容易被特效禁用,或者在渲染器不知道文本的确切背景时禁用


您应该在每个容器上使用它,因为有时,例如,通过数据模板,这些选项会再次默认用于子控件。

我花了几个小时试图找出自定义面板模糊的原因。在这些自定义面板上,我们使用了阴影边框效果。落影是罪魁祸首。如果面板并排放置,实际上会导致文本模糊。我没有足够高的声誉来发表评论,所以我在回答这个问题

UseLayoutRounding="True"

正如ecreif所回答的,这是解决我问题的办法。尽管我在他的回答中不需要其他代码行,但我还是添加了它们。

请注意,SnapToDevicePixels属性对文本图示符没有影响。在TextBlock上试试这个,看看我的意思。不幸的是,我们现在被模糊的文字所困扰。这里有更多关于模糊字体的信息:另外:在4K屏幕或其他场合,你可能会遇到视觉问题。例如,文本可以在中间被删除,或者一些像素完全丢失,甚至整个1像素行也会变得不可见。您需要其他技术来解决这些问题。