GDI+ zeichnet Briefe zusammen, die zusammengebunden sind
-
26-10-2019 - |
Frage
Ich habe das Gefühl, dass ich eine ähnliche Frage gelesen habe, aber ich kann sie nicht finden. Bitte schließen Sie, wenn Sie sie doppelten.
Ich versuche Text mit Zeichnen mit Graphics::DrawString
mit einer Monospace -Schrift (Konsolas). Wenn ich den Text jedoch zeichne, sind die Buchstaben nicht gleichmäßig verteilt. So sieht es aus:
Wie Sie sehen können, werden die Buchstaben in Gruppen von zwei und drei Personen zusammengefasst. ich lese Dieser Artikel Und ich dachte, ich hätte angemessene Schritte unternommen, um dies durch Verwendung zu vermeiden StringFormat::GenericTypographic
, aber anscheinend nicht. Ich benutze auch TextRenderingHintClearTypeGridFit
Weil alle anderen wie Müll aussehen (und es gibt keine TextRenderingHintClearType
ohne das GridFit
Teil).
Wie kann ich Text wie alle anderen Programme zeichnen, die Text mit einer Monospace -Schrift zeichnen, damit er richtig aussieht?
Lösung
Das Problem ist, dass GDI+ ein anderes (und längst verlassenes) System zum Zeichnen von Text verwendet. Beginnend mit .NET Framework 2.0 änderte Microsoft alle Steuerelemente, um GDI für die Textrevision zu verwenden, und nicht für GDI+. Die Textrenderung in GDI ist hardware beschleunigt und verbessert sich weiterhin mit Charakterrendern, Uniscribe, Ligaturen. Die Textrendern in GDI+ ist nicht hardware beschleunigt und erhält keine Korrekturen oder Verbesserungen.
GDI kann auch Anti-Alias-Zeichnen, verwenden Sie Cleartype_Quality oder Antialiased_Quality.
Hier ist ein Vergleich von
- GDI+ (
Graphics.DrawString
) - GDI (
TextRenderer.DrawText
)