none
Windows 7 + WPF(.NET 4)のテキスト表示(ClearType)が有効にならない。 RRS feed

  • 質問

  • ほぼ初期状態のソースにテキストブロックを追加しました。

    <Window x:Class="MainWindow"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
        <Grid>
            <TextBlock FontSize="9pt" TextOptions.TextRenderingMode="ClearType">abcdefg</TextBlock>
        </Grid>
    </Window>

    この状態であれば,問題なく"ClearType"が有効となります。

    しかし,デザインの都合上,ウィンドウの設定を

    WindowStyle="None" AllowsTransparency="True" 

    としたところ,"ClearType"の効果がなくなってしまいます。恐らく"Grayscale"で表示されているのではないかと思います。

    WindowStyle="None" AllowsTransparency="True" 

    と設定した状態で"ClearType"表示するにはどうしたらよいでしょうか?

    ご指導いただけますとありがたいのですが。

    2012年8月29日 0:04

回答

  • こんにちは。

     WindowStyle="None" AllowsTransparency="True" RenderOptions.ClearTypeHint="Enabled"

    とすると、クリアタイプとして表示されているように見えるのですが、どうでしょうか。

    • 編集済み Keiichi Oumi 2012年8月30日 0:58 図の意味なかった・・
    • 回答としてマーク VB User1 2012年8月30日 5:19
    2012年8月30日 0:46

すべての返信

  • WPFのバージョンもWindowsのバージョンも記載がないので再現できませんが、

    TextOptions.TextFormattingMode="Display"

    を指定したらどうなりますか?

    2012年8月29日 5:58
  • >WPFのバージョンもWindowsのバージョンも記載がないので再現できませんが、

    件名に「Windows 7 + WPF(.NET 4)」と書いたのですが,気づきにくかったでしょうかね。

    失礼致しました。

    TextOptions.TextFormattingMode="Display"

    も試してみましたが,効果なしです。

    WindowStyle="None" AllowsTransparency="True" 

    を指定しなければ,テキストの前後に黄色と青色が描画されてClearTypeが効いている事を確認できますが,

    WindowStyle="None" AllowsTransparency="True" 

    を指定するとグレーによるスムージング処理となっています。

    2012年8月29日 7:30
  • こんにちは。

     WindowStyle="None" AllowsTransparency="True" RenderOptions.ClearTypeHint="Enabled"

    とすると、クリアタイプとして表示されているように見えるのですが、どうでしょうか。

    • 編集済み Keiichi Oumi 2012年8月30日 0:58 図の意味なかった・・
    • 回答としてマーク VB User1 2012年8月30日 5:19
    2012年8月30日 0:46
  • バージョンの件、失礼しました。

    残念ながら再現できませんね。

    DisableHWAccelerationがWPF4でも有効かどうかは知りませんが、試されてはどうでしょうか?

    2012年8月30日 3:05
  • ●Keiichi Oumi さま

    WindowStyle="None" AllowsTransparency="True" RenderOptions.ClearTypeHint="Enabled"

    とする事で同じようにClearTypeがかかる事を確認しました。

    ありがとうございます。

    ●データくん さま

    環境によっては起きない現象という事になりますね。少々驚きました。

    DisableHWAccelerationはレジストリの設定ですよね。

    申し訳ございませんが,今回は遠慮させていただきます。



    • 編集済み VB User1 2012年8月30日 5:38
    2012年8月30日 5:19
  • こんにちは。

    レンダリング関連は全く未知の世界なのですが、
    http://msdn.microsoft.com/ja-jp/library/ms748373.aspx

    を見ると、

    WPF では、ハードウェア ピクセルの代わりにデバイス非依存ピクセルを主要測定単位として用いた~」

    との事なので、GDI系とWPFではレンダリングエンジンが違うのではないかって思えます。ブラウザのレンダリングエンジンって(おそらく)GDI系なのかなぁと。ChromとIEでもテキストの表示に関しては全然違ったりしますし…

    ですので、「Windowsの表示と同じにする事」は難しいのかなぁって気がします。

    「ClearTypeの調節」はわかりません。 orz

    2012年8月30日 5:39