none
OS・グラボでメイリオが文字欠けする RRS feed

  • 質問

  • 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は△

    同じような経験をされた方はいらっしゃいますでしょうか。

    2013年3月15日 7:31

回答

  • 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
    2013年3月15日 11:00

すべての返信

  • 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
    2013年3月15日 11:00
  • お返事遅くなりました。

    UseLayoutRounding=True

    あるいは

    EdgeMode=Aliased + BitmapScalingMode=HighQuality

    のいづれかで、文字欠けがなくなりました。

    ありがとうございました。


    2013年3月18日 6:37
  • 追記します。

    デフォルトではメイリオUIに替えるだけで文字欠けはなくなりました。

    メイリオはシャドウやブラーとかの加工を想定していなかったのでしょうね。

    2013年5月1日 8:37