加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 即使启用了ClearTypeHinting,WPF中的模糊文本?

发布时间:2020-12-15 18:29:18 所属栏目:百科 来源:网络整理
导读:我在 WPF / XAML中有一个带有此模板和样式的网格: Setter Property="TextOptions.TextFormattingMode" Value="Display" /Setter Property="RenderOptions.ClearTypeHint" Value="Enabled" /Setter Property="Template" Setter.Value ControlTemplate Target
我在 WPF / XAML中有一个带有此模板和样式的网格:
<Setter Property="TextOptions.TextFormattingMode" Value="Display" />
<Setter Property="RenderOptions.ClearTypeHint" Value="Enabled" />
<Setter Property="Template">
    <Setter.Value>
        <ControlTemplate TargetType="{x:Type DataGridCell}">
            <Border Padding="{TemplateBinding Padding}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True">
                <ContentPresenter x:Name="CellContent" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" RenderOptions.ClearTypeHint="Enabled" />
            </Border>
            <ControlTemplate.Triggers>
                <Trigger Property="IsSelected" Value="True">
                    <Setter TargetName="CellContent" Property="TextOptions.TextFormattingMode" Value="Display" />
                    <Setter TargetName="CellContent" Property="RenderOptions.ClearTypeHint" Value="Enabled" />
                    <Setter TargetName="CellContent" Property="Effect">
                        <Setter.Value>
                            <DropShadowEffect ShadowDepth="2" BlurRadius="2" Color="Black" RenderingBias="Quality" />
                        </Setter.Value>
                    </Setter>
                </Trigger>
            </ControlTemplate.Triggers>
        </ControlTemplate>
    </Setter.Value>
</Setter>

我选择网格行时的DropShadowEffect似乎使文本渲染模糊(灰色抗锯齿):

当我删除阴影效果时,它看起来很清晰,因为它现在使用ClearType而不是灰色子像素消除锯齿:

我已经尝试将RenderOptions.ClearTypeHint =“Enabled”应用于ContentPresenter,如上所示,但它没有帮助.

如何强制WPF渲染使用投影效果显示的文本以保留Cleartype抗锯齿,而不是那种丑陋模糊的灰色子像素抗锯齿?

有些人认为它因为投影而变得模糊 – 这不是真的.它只是模糊,因为没有使用ClearType.这是它在Firefox中的阴影和ClearType时的样子:

启用ClearType的文本很丰富 – 但模糊文本不是,因为它不使用ClearType – 它使用灰色子像素消除锯齿,而不是ClearType的工作方式:http://en.wikipedia.org/wiki/ClearType

问题是:如何为此文本启用ClearType?

解决方法

DropShadowEffect对象不能与ClearType一起使用.这在MSDN第 How to: Create Text with a Shadow页上说明:

These shadow effects do not go through the Windows Presentation
Foundation (WPF) text rendering pipeline. As a result,ClearType is
disabled when using these effects.

毕竟,DropShadowEffect是位图效果,而不是文本效果.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读