154 votes

Problème de polices WPF Blurry - Solutions

Le problème est décrit et démontré sur les liens suivants:

Explication: le Texte de la Clarté dans WPF. Ce lien a la police de comparaison.

Je voudrais recueillir toutes les solutions possibles à ce problème. Microsoft Expression Blend utilise WPF mais fonte lisible.

  • Fond sombre comme dans Microsoft Expression Blend
  • L'augmentation de la taille de la police et de modifier la police (Calibri ... ) [lien]
  • Incorporer les windows forms [lien]
  • L'utilisation de GDI+ et/ou Windows Forms TextRenderer classe pour afficher du texte à une image, et puis le rendu de l'image bitmap comme un contrôle WPF. [lien]

Existe-il des solutions?

Cela va être corrigé dans VS2010 (et WPF4) beta 2

WPF 4.0 Pile de Texte Améliorations

ON DIRAIT QU'IL A ÉTÉ ENFIN RÉSOLU !

Scott, Hanselman de l'ComputerZen.com: WPF et le Texte Flou, maintenant, avec toute la Clarté
WPF Texte du Blog: plus de WPF Texte Clarté des Améliorations

128voto

Helge Klein Points 3939

.NET 4 a enfin une solution pour la mauvaise qualité de rendu du texte de WPF, mais elle est bien cachée. Définissez les éléments suivants pour chaque fenêtre:

 TextOptions.TextFormattingMode="Display"
 

La valeur par défaut est "Idéal", ce qui n'est pas du tout ce que son nom implique.

Il existe deux autres options dans TextOptions, à savoir TextHintingMode et TextRenderingMode, mais les deux ont des valeurs par défaut sensibles.

108voto

David Schmitt Points 29384

De formation technique

Il y a un article détaillé sur WPF rendu de Texte à partir de l'une des WPF Texte Gestionnaires de Programme sur windowsclient.net: le Texte de la Clarté dans WPF.

Le problème se résume à WPF besoin d'un linéaire de police échelle-moteur de rendu pour des animations fluides. Pure ClearType sur l'autre main prend un peu de liberté avec la police pour pousser les tiges verticales dans le prochain pixel.

La différence est évidente si l'on compare le classique "cascade". WinForms sur le côté inférieur gauche, WPF sur le côté en haut à droite:

Alors que je ne suis pas fan de WPF rendu des polices idiosyncrasies soit, j'imagine que la clameur si les animations de sauter comme ils le font dans les Winforms en cascade.

Jouer avec le registre

D'un intérêt particulier pour moi, c'était le lien de l'article MSDN "ClearType les Paramètres de Registre", ce qui explique l'utilisation possible du côté des ajustements dans le registre:

  • ClearType niveau: le montant de la sous-pixel de l'affinage
  • Niveau de Gamma
  • Structure de Pixel: comment les bandes de couleurs sur un écran de pixels sont disposés
  • Texte sur le niveau de contraste: permet de régler la largeur de glyphe tiges de rendre la police plus lourd

Jouer avec ces paramètres n'a pas vraiment d'améliorer le problème sous-jacent, mais il peut aider à en réduisant la couleur des saignements effet pour les utilisateurs sensibles.

Une autre approche

Les meilleurs conseils de clarifier le Texte de l'article a donné l'augmentation de la taille de la police et de la modification de la police. Calibri fonctionne pour moi mieux que la norme Segoe UI. En raison de sa popularité en tant que polices web, j'ai essayé Verdana trop, mais il a un méchant saut de poids entre 14pt et par 15 pt qui est très visible lors de l'animation de la taille de la police.

WPF 4.0

WPF 4 aura un meilleur soutien pour influencer le rendu des polices. Il y a un article sur le WPF Texte de Blog expliquant les changements. Le plus en évidence, il y a maintenant (au moins) trois différents types de rendu de texte:

text rendering comparison

<grogne>Qui devrait être assez de corde pour chaque concepteur.</grognent>

43voto

Isak Savo Points 15357

J'ai rencontré un problème l'autre jour quand j'ai utilisé une frontière qui avait un DropShadowEffect appliquée. Le résultat a été que tout le texte à l'intérieur de cette frontière est très floue. Il n'a pas d'importance si le texte a été à l'intérieur d'autres panneaux ou directement sur la frontière de tout bloc de texte qui est l'enfant d'un parent qui a un Effet appliqué semble être affecté.

La solution à ce cas particulier était de ne pas mettre des choses à l'intérieur de la frontière qui a des effets, mais au lieu d'utiliser une grille (ou autre chose qui prend en charge de mettre du contenu sur le dessus de l'autre) et placez un rectangle dans la même cellule que le texte (c'est à dire comme un frère ou une sœur dans l'arborescence visuelle) et de mettre les effets.

Comme suit:

<!-- don't do this --->
<Border>
     <Border.Effect>
          <DropShadowEffect BlurRadius="25" ShadowDepth="0" Opacity="1"/>
     </Border.Effect>
     <TextBlock Text="This Text Will Be Blurry" />
</Border>

<!-- Do this instead -->
<Grid>
  <Rectangle>
     <Rectangle.Effect>
          <DropShadowEffect BlurRadius="25" ShadowDepth="0" Opacity="1"/>
     </Rectangle.Effect>
  </Rectangle>
  <TextBlock Text="This Text Will Be Crisp and Clear" />
</Grid>

10voto

Pavel Minaev Points 60647

Cela va être corrigé dans VS2010 (et WPF4) beta 2:

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X