GDI+は、束ねられた文字を描きます
-
26-10-2019 - |
質問
私はこれに似た質問を読んだように感じますが、それを見つけることができないので、複製する場合は閉じてください。
私はテキストを描画しようとしています Graphics::DrawString
モノスペースフォント(コンソラ)を使用。ただし、テキストを描くと、文字は均等に間隔を空けていません。これがどのように見えるかです:
ご覧のとおり、文字は2つと3つのグループにクラスター化されています。私は読む この記事 そして、私はそれを避けるために十分な措置を講じたと思いました StringFormat::GenericTypographic
, 、しかしどうやらそうではありません。私も使用しています TextRenderingHintClearTypeGridFit
他のすべてがジャンクのように見えるからです(そしてありません TextRenderingHintClearType
なしで GridFit
部)。
Monospaceフォントでテキストを描く他のすべてのプログラムと同様に、正しく見えるようにテキストを描くにはどうすればよいですか?
解決
問題は、GDI+がテキストを描画するために異なる(そして放棄されてから長い間)システムを使用していることです。 .NETフレームワーク2.0から始めて、Microsoftはすべてのコントロールを変更して、GDI+ではなくテキストレンダリングに実際にGDIを使用しました。 GDIでのテキストレンダリングはハードウェアが加速され、文字レンダリング、Uniscribe、ligaturesで改善を続けました。 GDI+でのテキストレンダリングは、ハードウェアの加速ではなく、修正や改善を取得しません。
GDIは、抗拡散を描画し、ClearType_QualityまたはAntialiased_Qualityを使用することもできます。
これが比較です
- GDI+(
Graphics.DrawString
) - GDI(
TextRenderer.DrawText
)