- - PR -
C# 漢字と英数字でにじみ方に違い(DrawStringメソッド)
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-08-17 17:45
24bitのBitmapオブジェクト(24bppRgb)に対し、DrawStringメソッド(Graphics)で黒色を指定して文字列(MSP ゴシック)を書き込んだところ、漢字はにじみ無い黒色で書き込まれますが、半角英数字はにじんだ灰色で書き込まれていました。
質問1 上記のような違いが発生する原因は何でしょうか? 質問2 上記のような違いが発生しないよう制御することはできますか? | ||||||||
|
投稿日時: 2007-08-17 18:51
スムーズになるほうのフォントはClearTypeなどのアンチエイリアスが有効になっていて ならないほうはClearTypeが有効になっていないからだと思います。
両方ともClearTypeとかアンチエイリアスを使うようにするか、 両方とも使わないようにすればいいと思います。 Graphics.TextRenderingHintを使えばClearTypeやアンチエイリアスの有効・無効の制御が可能です。 [編集] アンチエイリアスについて書いてなかったので追加。 [ メッセージ編集済み 編集者: れい 編集日時 2007-08-18 01:57 ] | ||||||||
|
投稿日時: 2007-08-18 12:48
XPでは、日本語フォントにClearTypeが有効にならないとか、大きくないとダメとか、なかったでしたっけ?
| ||||||||
|
投稿日時: 2007-08-18 13:10
既定では… 該当フォントに、該当サイズのビットマップフォントがある場合は無条件でそれを用います。 ない場合、該当フォントに埋め込まれた情報でスムージングするか、ClearTypeを使うか、などが決定されます。 MSゴシックは16ポイントまでビットマップフォントが入ってます。 ですので、 ・16ポイントより大きいフォントで書く というのもひろしさんへの回答の一つですね! 勿論既定の振る舞いは上書きできます。 前記のGraphics.TextRenderingHintを使います。 | ||||||||
|
投稿日時: 2007-08-19 21:22
Graphics.TextRenderingHint
で解決できました。ありがとうございました。 |
1