11

GDI +を使用してガラスにテキストを描画する:

graphics.DrawString(s, Length(s), font, MakePointF(x, y), brush);

ClearTypeが有効になっているテキストは、ガラス上での描画が非常に不十分であることに気付くでしょう。

代替テキスト

しかし、ガラスを無効にすると、もちろん、テキストはうまく描画されます。

代替テキスト

比較のために、ここにアンチエイリアスフォントスムージングがあります:

代替テキスト

そして、ここにフォントスムージングは​​ありません

代替テキスト

:StackOverflowはモニター上の画像のサイズを変更するため、実際よりも見栄えのするフォントスムージングは​​ありません。

ガラスにClearTypeテキストを描画するにはどうすればよいですか?

ノート

  • Win32ネイティブ
  • .NETではない(つまりネイティブ)
  • Winformsではない(つまりネイティブ)
  • GDI +(つまりネイティブ)

Markが示唆しているのは、テキストレンダリングに対するユーザーの好みを尊重できないことです(つまり、 " SystemDefault"。ClearTypeはGlassでは機能しないため、使用できません。

つまり、ガラス上でレンダリングする場合は、テキストレンダリングを次のようにオーバーライドする必要があります。

graphics.SetTextRenderingHint(TextRenderingHintAntiAliasGridFit);

それ以外の場合は、TextRenderingHintをデフォルトのままにしておく必要がありますTextRenderingHintSystemDefault

も参照してください

4

1 に答える 1

2

この問題は、描画の実行方法に固有のものです。テキストはすべて黒の背景に描画され、ガラスの背景に合成されます。半透明のフォント スムージングを黒と組み合わせて黒に近づけています。

于 2010-11-23T17:32:20.073 に答える