【问题标题】:Flickering and blurry text闪烁和模糊的文本
【发布时间】:2016-05-30 21:52:55
【问题描述】:

我的文字有问题。在一些自定义用户控件中,它每秒闪烁一次(可能在渲染时)这是一个 gif:

我现在正在使用这些渲染和文本选项,它们应用于Window

RenderOptions.ClearTypeHint="Enabled"
TextOptions.TextFormattingMode="Display"
RenderOptions.BitmapScalingMode="HighQuality"

我以前用过这些:

RenderOptions.ClearTypeHint="Enabled"
RenderOptions.BitmapScalingMode="Linear"
TextOptions.TextRenderingMode="Grayscale"
TextOptions.TextFormattingMode="Display"

还可以,但是文字太尖锐了。

此特定组件的 XAML:

<UserControl x:Class="FunctionButton" x:Name="PART_Base"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
         xmlns:dxmvvm="http://schemas.devexpress.com/winfx/2008/xaml/mvvm" xmlns:ViewModels="clr-namespace:SkyPCTool"
         xmlns:materialDesign="clr-namespace:MaterialDesignThemes.Wpf;assembly=MaterialDesignThemes.Wpf"
         mc:Ignorable="d"
         TextElement.FontWeight="Medium"
         TextElement.FontSize="14"
         FontFamily="pack://application:,,,/MaterialDesignThemes.Wpf;component/Resources/Roboto/#Roboto"
         MinHeight="52" d:DesignWidth="300" Margin="0">
<UserControl.DataContext>
    <ViewModels:FunctionButtonViewModel/>
</UserControl.DataContext>
<UserControl.Resources>
    <ViewModels:TextToVisibilityConverter x:Key="textConverter" />
</UserControl.Resources>
<Border CornerRadius="2" Background="{StaticResource MaterialDesignPaper}">
    <Grid Margin="12,6">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="3*" />
        </Grid.ColumnDefinitions>
        <Button x:Name="PART_Button" HorizontalAlignment="Center" VerticalAlignment="Center" Padding="12,6" Content="{Binding ButtonCaption}" />
        <Grid Grid.Column="1" Margin="6,0">
            <Image Source="{Binding Icon}" ToolTip="{Binding IconTag}" />
        </Grid>
        <Grid Grid.Column="2" SnapsToDevicePixels="True">
            <Grid.RowDefinitions>
                <RowDefinition />
                <RowDefinition Height="Auto" />
            </Grid.RowDefinitions>
            <TextBlock Grid.Row="0" Text="{Binding Title}" RenderOptions.ClearTypeHint="Enabled" VerticalAlignment="Center" TextTrimming="CharacterEllipsis" FontSize="14"  />
            <TextBlock Grid.Row="1" Text="{Binding Description}" RenderOptions.ClearTypeHint="Enabled" Margin="12,0,0,0" Visibility="{Binding Text, RelativeSource={RelativeSource Self}, Converter={StaticResource textConverter}}" FontWeight="Normal" VerticalAlignment="Center" TextWrapping="Wrap" FontSize="12.667" />
        </Grid>
    </Grid>
</Border>

【问题讨论】:

  • 在您的 Window 上,尝试将 TextOptions.TextFormattingMode="Display" 更改为 TextOptions.TextFormattingMode="Ideal"
  • 仍然闪烁,现在有些组件非常模糊,“伤害”了眼睛
  • 嗯,你的方式是使用 GDI 字体矩阵,我想这可能会导致问题......
  • 所以我应该改一下字体?
  • 是的,尝试更改字体本身...

标签: wpf vb.net xaml text cleartype


【解决方案1】:

我做到了。我从Google website 下载了Roboto 字体,然后我在Window 上设置了这些选项:

RenderOptions.ClearTypeHint="Enabled"
TextOptions.TextFormattingMode="Ideal"
TextOptions.TextHintingMode="Animated"
TextOptions.TextRenderingMode="ClearType"

【讨论】:

  • 所以 TextFormattingMode 和 TextHintingMode 我明白了,很高兴你明白了!
猜你喜欢
  • 2017-08-10
  • 1970-01-01
  • 1970-01-01
  • 2014-06-30
  • 2017-03-08
  • 1970-01-01
  • 1970-01-01
  • 2018-11-06
  • 2018-01-30
相关资源
最近更新 更多