• 締切済み

MFC XPでのTextOutのボヤケについて

はじめまして。 質問させてください。 CImageを使用して OnPaint( )でBMP画像を描画するアプリを作成しております。 仕様といたしまして ダイアログのDC部にBMPを全体に描画して RGB( 255, 255, 255 )を透明化(背景が完全に見える)する ようにしております。 OnInitDialog( )で透過、透明処理をしています。 OnPaint( )で PaintDC PDC; //背景を透過 PDC.SetBkMode( TRANSPARENT ); PDC.SetTextColor( RGB( 255, 0, 0 ) ); PDC.SetBkColor( RGB( 255, 255, 255 ) ); PDC.TextOutW( 100, 100, _T( "TEST" ) ); 上記のように実装して、EXEで実行して確認しますと Windows2000の場合、正常に文字(TEST)が赤字で描画されるのですが WindowsXPの場合、赤字で描画されるのですが文字の周りがぼやけてしまいます。 イメージとしては文字描画部分が 2000の場合、BMP表示 XPの場合、JPG表示 のようになります。 これは仕様なのでしょうか? それとも何かコードレベルで解決できるのでしょうか? お詳しい方がおりましたらご教授お願いいたします。 よろしくお願いいたします。

みんなの回答

  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.1

Xpでは文字にアンチエイリアス (文字の縁を滑らかにする技法) がかかる為です。 「画面のプロパティ」→「デザイン」タブにある「効果」の 「次の方法でスクリーン フォントの縁を滑らかにする」のチェックをはずせば Windows2000と同じにようにアンチエイリアスがかからなくなります。 (つまりTextOutA/W APIはこの設定に影響を受けます。MFCのTextOutも内部でこのAPIを呼んでいるだけです。) 私は使ったことが無いので詳細はわかりませんが コード上で実現する為には GetGlyphOutlineを使う事でシステムの設定に関係なく アンチエイリアスを無効にしたフォントの出力が可能なようです。 「GetGlyphOutline アンチエイリアス無し」で検索すると、 それについて解説しているページが見つかります。

関連するQ&A