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:

entrer image description ici

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?

Était-ce utile?

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)

entrer image description ici

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top