トップ回答者
OS・グラボでメイリオが文字欠けする

質問
-
net4.0 wpfでメイリオを使っていると文字が欠けたりします。
MSDNでは8ポイント未満で出ることがあるとか書いてありましたが、18ポイントで発生します。
出る環境はWindows7 64bit SP1 net4.0 64bitで出ます。
条件
任意の位置のラベル h48 w110 センタリング 文字色 &HCCFFFFDF
textshadow=1.0 backshadow=3.0 bler=3.0
背景は上下半分に分かれて2色 上 &HFF7F6A54 下 &HFF695035
いろいろな位置で文字列を書いて、ある位置だと文字の横方向の線が消えます。よく消えるのは「天気」の天の真ん中の横線です。
ビデオカードのドライバが悪いのか、同じカードでWindowsXPではでません。レンダリングの方法が違うのでしょうか。
nVideaの3桁がよく出ます。古い4桁では問題ありません。
nVidea EMP-8もだめです。
Intel G75は○ G4000は△
同じような経験をされた方はいらっしゃいますでしょうか。
回答
-
WinFormと異なりWPFではDirectXによって描画が制御されていますので(WinFormはGDI+)、ビデオカードによって差が生じる事はありえます。
特にテキスト関連(というかアンチエイリアシング関連)はよく問題になる部分です。
ただWPF4になって、そのあたりのレンダリング周りのオプションが増えていくらか対応しやすくなっています。
代表的な所で「UseLayoutRounding」「RenderOptions.EdgeMode」「RenderOptions.BitmapScalingMode」等のプロパティがありますので、この辺を組み合わせて現象を回避できないかどうか試してみて下さい。>> 同じカードでWindowsXPではでません。レンダリングの方法が違うのでしょうか。
Windows Vista以降だとDWM(Desktop Window Manager)が描画を担当していますが、XPだとそれが無いのでそこらへんの違いでしょうね。
以上、参考まで。
- 回答としてマーク tcs_takiaki 2013年3月18日 6:34
すべての返信
-
WinFormと異なりWPFではDirectXによって描画が制御されていますので(WinFormはGDI+)、ビデオカードによって差が生じる事はありえます。
特にテキスト関連(というかアンチエイリアシング関連)はよく問題になる部分です。
ただWPF4になって、そのあたりのレンダリング周りのオプションが増えていくらか対応しやすくなっています。
代表的な所で「UseLayoutRounding」「RenderOptions.EdgeMode」「RenderOptions.BitmapScalingMode」等のプロパティがありますので、この辺を組み合わせて現象を回避できないかどうか試してみて下さい。>> 同じカードでWindowsXPではでません。レンダリングの方法が違うのでしょうか。
Windows Vista以降だとDWM(Desktop Window Manager)が描画を担当していますが、XPだとそれが無いのでそこらへんの違いでしょうね。
以上、参考まで。
- 回答としてマーク tcs_takiaki 2013年3月18日 6:34
-
お返事遅くなりました。
UseLayoutRounding=True
あるいは
EdgeMode=Aliased + BitmapScalingMode=HighQuality
のいづれかで、文字欠けがなくなりました。
ありがとうございました。
- 編集済み tcs_takiaki 2013年3月18日 6:37