GDI + dessine des lettres tassent
-
26-10-2019 - |
Question
Je me sens comme je l'ai lu une question similaire à cela, mais je ne le trouve pas, merci de près si double.
Je suis en train de dessiner du texte avec Graphics::DrawString
avec une police Monospace (Consolas). Cependant, quand je dessine le texte, les lettres ne sont pas régulièrement espacées. Voici à quoi il ressemble:
Comme vous pouvez le voir, les lettres sont regroupées en groupes de deux et trois. J'ai lu cet article et je pensais que je l'avais pris des mesures adéquates pour l'éviter en utilisant StringFormat::GenericTypographic
, mais apparemment non. J'utilise aussi TextRenderingHintClearTypeGridFit
parce que tous les autres ressemblent à ordure (et sans la partie TextRenderingHintClearType
il n'y a pas GridFit
).
Comment puis-je dessiner du texte comme tous les autres programmes qui attirent le texte avec une police afin qu'elle chasse fixe semble bon?
La solution
Le problème est que GDI + utilise un autre (et depuis longtemps abandonné) système pour l'affichage de texte. A partir de NET Framework 2.0, Microsoft a changé tous les contrôles pour réellement utiliser GDI pour le rendu de texte, plutôt que GDI +. rendu de texte dans GDI est l'accélération matérielle, et a continué à obtenir des améliorations de caractère rendu, Uniscribe, ligatures. rendu de texte dans GDI + est pas de matériel accéléré et de ne pas obtenir des correctifs ou des améliorations.
GDI peut également tirer Lissé, l'utilisation CLEARTYPE_QUALITY ou ANTIALIASED_QUALITY.
Voici une comparaison de
- GDI + (
Graphics.DrawString
) - GDI (
TextRenderer.DrawText
)