- PR -

C# 漢字と英数字でにじみ方に違い(DrawStringメソッド)

1
投稿者投稿内容
ひろし
ぬし
会議室デビュー日: 2002/09/16
投稿数: 390
お住まい・勤務地: 兵庫県
投稿日時: 2007-08-17 17:45
24bitのBitmapオブジェクト(24bppRgb)に対し、DrawStringメソッド(Graphics)で黒色を指定して文字列(MSP ゴシック)を書き込んだところ、漢字はにじみ無い黒色で書き込まれますが、半角英数字はにじんだ灰色で書き込まれていました。

質問1 上記のような違いが発生する原因は何でしょうか?
質問2 上記のような違いが発生しないよう制御することはできますか?
れい
ぬし
会議室デビュー日: 2005/11/01
投稿数: 346
投稿日時: 2007-08-17 18:51
引用:

ひろしさんの書き込み (2007-08-17 17:45) より:
質問1 上記のような違いが発生する原因は何でしょうか?



スムーズになるほうのフォントはClearTypeなどのアンチエイリアスが有効になっていて
ならないほうはClearTypeが有効になっていないからだと思います。

引用:

質問2 上記のような違いが発生しないよう制御することはできますか?



両方ともClearTypeとかアンチエイリアスを使うようにするか、
両方とも使わないようにすればいいと思います。

Graphics.TextRenderingHintを使えばClearTypeやアンチエイリアスの有効・無効の制御が可能です。

[編集]
アンチエイリアスについて書いてなかったので追加。

[ メッセージ編集済み 編集者: れい 編集日時 2007-08-18 01:57 ]
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-08-18 12:48
XPでは、日本語フォントにClearTypeが有効にならないとか、大きくないとダメとか、なかったでしたっけ?
れい
ぬし
会議室デビュー日: 2005/11/01
投稿数: 346
投稿日時: 2007-08-18 13:10
引用:

Jittaさんの書き込み (2007-08-18 12:48) より:
XPでは、日本語フォントにClearTypeが有効にならないとか、大きくないとダメとか、なかったでしたっけ?



既定では…
該当フォントに、該当サイズのビットマップフォントがある場合は無条件でそれを用います。
ない場合、該当フォントに埋め込まれた情報でスムージングするか、ClearTypeを使うか、などが決定されます。
MSゴシックは16ポイントまでビットマップフォントが入ってます。
ですので、

・16ポイントより大きいフォントで書く
というのもひろしさんへの回答の一つですね!

勿論既定の振る舞いは上書きできます。
前記のGraphics.TextRenderingHintを使います。
ひろし
ぬし
会議室デビュー日: 2002/09/16
投稿数: 390
お住まい・勤務地: 兵庫県
投稿日時: 2007-08-19 21:22
Graphics.TextRenderingHint
で解決できました。ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)