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:

enter image description here

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?

War es hilfreich?

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)

enter image description here

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top