为什么我的 WPF 4.5 应用程序中的某些文本仍然模糊不清?

Why is some of the text in my WPF 4.5 application still blurry?

我不明白。我快要疯了——无论我做什么,我的 WPF 应用程序中的文本都是模糊的。好吧,其中一些 - 其中一个文本元素被聚焦,close/minimize 按钮也是如此。我已将 TextOptions.TextRenderingMode="ClearType"TextOptions.TextFormattingMode="Display" 直接应用于元素,我还尝试将其应用于 MainWindow.xaml,这是默认使用 ModernUI for WPF 框架创建的。

我快疯了 - 我找到的所有文献都说这个问题已经解决了,但我仍在处理这个问题。 (我已将字体更改为 Calibri/Consolas,还调整了大小和粗细 - 仍然模糊不清。)

我该如何解决这个问题?

编辑:如果我使用工作时使用的显示器(分辨率 1920x1200)和标准 DPI 设置,我不太确定是否有问题。在我使用的笔记本电脑显示器上,我的分辨率非常高 (2880x1620),文本缩放设置为更大。在此显示上,我当前看到的文本为 "not crisp"。我还应该注意到,在设计器中,文本看起来很好。就是当应用程序运行时,文本看起来很糟糕。

首先你可以试试

<TextBlock Text="Am I Still Blurry." RenderOptions.ClearTypeHint="Enabled"/>

你可能想看看这个 post 以便更清楚地理解

这是设计使然。这些不同的控件集和它们具有不同样式的字体颜色。对于 window 右上角的示例设置和帮助,他们使用的是下面定义的样式 SystemButtonLink

<Style x:Key="SystemButtonLink" TargetType="ButtonBase" BasedOn="{StaticResource SystemButtonBase}" >
    <Setter Property="Foreground" Value="{DynamicResource LinkButtonText}"/>
    <Setter Property="Width" Value="NaN" />
    <Setter Property="Height" Value="NaN" />
    <Setter Property="FontFamily" Value="Segoe UI" />
    <Setter Property="FontSize" Value="11" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type ButtonBase}">
                <Border Name="Chrome"
                            Background="{TemplateBinding Background}"
                            BorderThickness="{TemplateBinding BorderThickness}"
                            BorderBrush="{TemplateBinding BorderBrush}"
                            SnapsToDevicePixels="true">
                    <TextBlock DataContext="{TemplateBinding Content}"
                               Text="{Binding Converter={StaticResource ToUpperConverter}}"
                               Margin="{TemplateBinding Padding}"
                               VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                               HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                               SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
    <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="Foreground" Value="{DynamicResource LinkButtonTextHover}"/>
        </Trigger>
        <Trigger Property="IsPressed" Value="True">
            <Setter Property="Foreground" Value="{DynamicResource LinkButtonTextPressed}" />
        </Trigger>
        <Trigger Property="IsEnabled" Value="false">
            <Setter Property="Foreground" Value="{DynamicResource LinkButtonTextDisabled}" />
        </Trigger>
    </Style.Triggers>
</Style>

如果您参考鼠标悬停、按下和启用的样式中使用的三种颜色。 更多代码可以参考网站。 https://mui.codeplex.com/SourceControl/latest

因此,我发现我的问题特别与现代 UI 框架有关。我不确定为什么。我切换到使用 MahApps.Metro 并且字体清晰度没有问题。