为什么我的 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 并且字体清晰度没有问题。
我不明白。我快要疯了——无论我做什么,我的 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 并且字体清晰度没有问题。