WPF Floue polices problème - Solutions
Problème est décrit et démontré sur les liens suivants:
- Paul Stovell WPF: Floues de Rendu de Texte
- www.gamedev.net forum
- Microsoft Connect: WPF texte convertisseur produit mal texte flou sur les petites tailles de police
Explication: 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]
- Intégrer windows forms [lien]
- Utiliser 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]
Sont plus là solutions?
Ce sera corrigé dans VS2010 (et WPF4) beta 2
ON DIRAIT QU'IL A ÉTÉ ENFIN RÉSOLU !
Scott, Hanselman de l'ComputerZen.com: WPF et le Texte Flou, maintenant avec plus de Clarté complète
- VS2010RC est totalement inutilisable pour moi mpdreamz.nl/vs2010RC-blur.png
- VS2010RC sur ma machine a l'air beaucoup mieux que sur votre photo, en fait avec le fond blanc est très bon, mais encore le suce à fond sombre.
- Avez-vous trouvez une solution pour ce problème, en Fait j'ai le même problème ici, dans mon application et je suis en utilisant WPF 3.5 avec VS2010
- Les 3 derniers liens sont morts.
Vous devez vous connecter pour publier un commentaire.
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: 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 "en cascade" de modèle. 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'intérêt spécial 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:
De 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 est un article sur le WPF Texte Blog d'expliquer les changements. Le plus en évidence, il y a maintenant (au moins) trois différents types de rendu de texte:
<se plaindre>Qui devrait être assez de corde pour chaque concepteur.</grognent>
.NET 4 a enfin une solution à WPF texte médiocre qualité du rendu, mais il est bien caché. Définir les paramètres suivants pour chaque fenêtre:
Valeur par défaut est "l'Idéal", ce qui n'est pas du tout ce que le nom implique.
Il y a deux autres options dans TextOptions, à savoir TextHintingMode et TextRenderingMode, mais ils ont tous deux des valeurs par défaut raisonnables.
TextFormattingMode="Ideal"
(comme par défaut) etTextHintingMode="Fixed"
qui a le mieux fonctionné. Il n'est pas encore parfait, mais.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ée 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:
Cela va être corrigé dans VS2010 (et WPF4) beta 2:
SnapToDevicePixels ne s'applique qu'à WPF, des formes (lignes, etc.), pas de moteur de rendu de texte.
Il n'y a pas de solution connue à ce problème. Selon Microsoft, le comportement est "by design".
Voir aussi cette thread sur les forums Microsoft discuter des problèmes rencontrés - il a eu quelques réponses de MME gars qui clarifient leur position sur la question.
Un développeur point, connue seulement de la "solution de contournement" est d'utiliser 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. Côté d'évidentes implications sur les performances, ce n'est pas de résoudre le problème pour les applications existantes.
J'ai maintenant créé un Microsoft Connect ticket pour ce problème (à ma grande surprise, malgré toute la négativité, il n'y a pas de réel rapport de bug désignés dans le tracker).
Puisque c'est l'un des canaux officiels de communication les demandes et les questions de Microsoft, je vous conseille aussi de passer par elle pour une réponse plus rapide. Au moins, si vous le souhaitez pour que la question soit abordée d'une manière ou d'une autre, de voter pour ce billet il y et/ou de la validation de la question va vous aider à attirer l'attention de Microsoft PMs et des ingénieurs de ce problème, et peut-être soulever sa priorité.
Je ne vois pas cela comme un bug, mais la configuration par défaut est en effet très gênant. Voici une comparaison de toutes les combinaisons de
SnapToDevicePixels
n'est pas du tout différente de l'affichage de texte.Que je préfère:
où les lignes verticales ne sont jamais floues.
La police utilisée est Ouvert Sans la Lumière, qui peut être vraiment belle si elle est bien utilisée, comme dans la dernière version de TeamViewer.
Pour ceux qui utilisent Mahapps.Le métro, le problème est le
TransitioningContentControl
https://github.com/MahApps/MahApps.Metro/issues/889Juste essayé VS2010 bêta, ce qui est fait dans WPF, et elle souffre de MAL de l'floue-police en question. En particulier sur les info-bulles.
Qui semble donner des preuves que WPF4 aura en fait pas de résoudre le problème (si quelque chose, il semble pire)
Wow, je ne peux pas croire que j'ai finalement obtenu mon WPF polices lisibles. Et j'ai aussi ne peux pas croire il n'y a pas d'option de dialogue pour effectuer ces changements, tandis que les valeurs par défaut sont horribles sur mon écran.
Ces les paramètres de registre (en décimal) a travaillé pour moi et le plus proche de mon cleartype police:
Ils disent "SnapToDevicePixels = true" fonctionne, mais je n'ai jamais vu aucun de bons résultats.
Je combat le texte flou, optez pour une police de caractères différente.
Évidemment, ce n'est pas une solution au problème, mais c'est la façon dont j'ai travaillé autour d'elle.
Si vous préférez utiliser une classe de base C# pour la personnalisation de windows pour votre application (ou ont maintenant une raison de), voici comment vous définissez pouvez définir la mise en forme du texte à utiliser l'Écran en mode: