3

似たような質問を読んだような気がしますが、見つからないので、重複している場合は閉じてください。

Graphics::DrawString等幅フォント(Consolas)でテキストを描画しようとしています。しかし、私がテキストを描くとき、​​文字は等間隔ではありません。外観は次のとおりです。

ここに画像の説明を入力してください

ご覧のとおり、文字は2つと3つのグループにまとめられています。私はこの記事を読み、を使用してそれを回避するための適切な措置を講じたと思いましたStringFormat::GenericTypographicが、明らかにそうではありませんでした。TextRenderingHintClearTypeGridFit他のすべてががらくたのように見えるので(そしてTextRenderingHintClearTypeその部分なしではありません)、私も使用していますGridFit

等幅フォントでテキストを描画する他のすべてのプログラムと同じように、正しく見えるようにテキストを描画するにはどうすればよいですか?

4

1 に答える 1

5

問題は、GDI+ がテキストの描画に別の (そして長い間放棄されていた) システムを使用していることです。.NET Framework 2.0 以降、Microsoft はすべてのコントロールを変更し、GDI+ ではなく GDI を実際にテキスト レンダリングに使用するようにしました。GDI でのテキスト レンダリングはハードウェア アクセラレーションであり、文字レンダリング、Uniscribe、合字で引き続き改善されています。GDI+ でのテキスト レンダリングはハードウェア アクセラレーションではなく、修正も改善もされていません。

GDI は、CLEARTYPE_QUALITY または ANTIALIASED_QUALITY を使用して、アンチエイリアスを描画することもできます。

の比較はこちら

  • GDI+ ( Graphics.DrawString)
  • GDI ( TextRenderer.DrawText)

ここに画像の説明を入力

于 2012-02-17T03:08:30.963 に答える