2016-02-18 3 views
2

J'ai un problème avec un texte. Dans certains usercontrols personnalisés, il scintille tous les plus/moins seconde (probablement lors du rendu) voici un gif: Flickering textTexte clignotant et flou

J'utilise ces rendent et les options de texte pour le moment qui sont appliqués sur Window:

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

j'utilisais avant ceux-ci:

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

et il était correct, mais le texte était trop forte.

XAML de ce composant spécifique:

<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> 

+0

Sur votre fenêtre, essayez de changer 'TextOptions.TextFormattingMode = "Affichage"' à ** TextOptions.TextFormattingMode = "Idéal" ** – Codexer

+0

Toujours clignotant et maintenant certains composants sont si flous qu'il "blesse" les yeux –

+0

Hmm, bien la façon dont vous l'avez est en utilisant les matrices de polices GDI, je pensais que ce serait peut-être causer le problème ... – Codexer

Répondre

1

je l'ai fait. J'ai téléchargé la police Roboto de Google website, puis je définir ces options sur Window:

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

Donc, le TextFormattingMode et le TextHintingMode travaillé, je vois, heureux que vous l'avez! – Codexer

+0

Oui cela a fonctionné parfaitement merci! –