none
Aero Glassのように半透明なウィンドウの背景をぼかしたい RRS feed

  • 質問

  • Aeroのように半透明なウィンドウの背景をぼかしたいのですが、どのようにすればよいでしょうか?

    <Window x:Class="MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" WindowStyle="None" 
        Title="MainWindow" Height="350" Width="525" AllowsTransparency="True" Background="Transparent">
        <Grid Background="#50000000">
            <Grid.Effect>
                <BlurEffect  Radius="10" KernelType="Gaussian" />
            </Grid.Effect>
        </Grid>
    </Window>
    

    とすれば、半透明なウィンドウを作ることはできますが、Aero Glassのように背景をぼかすという表現にはなりません。

    XP、(Aeroが無効な)Vista/7、(AeroGlassが廃止されるらしい)Windows8でもできるようにしたいのですが、可能でしょうか?

    2012年6月2日 5:05

回答

  • テーマを変更しても変わらない事が狙いなので、DWMに依存しない方法がないものかと思いました。

    非常に困難か、無理じゃないでしょうか。

    DWM が無効な場合、一つのスクリーンをすべてのプログラムが共有して描画するような形になります。(参考
    下にあるウィンドウの描画を一度普通にさせて、その描画内容を取得し、ぼやかして、自分のウィンドウ描画と混ぜるわけですよね。難しいか、できたとしてもパフォーマンスの低下を招くのがオチだと思っています。(他のウィンドウに描画させ、取得する部分は API 使いまくりになりそう)
    OS が用意している仕組みはレイヤードウィンドウのように「ぼかす」がない処理だけです。

    2012年6月3日 2:04

すべての返信

  • 透明度はデスクトップのテーマで変更できます。ハードコーディングで透明度を決めてしまうとテーマを変更している環境では逆に変になってしまうと思います。

    Windows API Code Pack for Microsoft .NET FrameworkのGlassWindowクラスを使用すればデスクトップテーマにそったウィンドウが作成できるかなとか。(よくわかってない。)

    # ちなみにWin8でAero Glassの廃止のニュースもありましたが現状では何もないのであのニュースはなんだったのやら。

    2012年6月2日 14:37
  • 佐祐理さま

    先日はお世話になりました。

    テーマを変更しても変わらない事が狙いなので、DWMに依存しない方法がないものかと思いました。

    Aero Glassと同じ物を作りたいわけではなく、ウィンドウの背景に対して同じようなぼかし処理をしたいという事なのです。

    2012年6月2日 15:14
  • テーマを変更しても変わらない事が狙いなので、DWMに依存しない方法がないものかと思いました。

    非常に困難か、無理じゃないでしょうか。

    DWM が無効な場合、一つのスクリーンをすべてのプログラムが共有して描画するような形になります。(参考
    下にあるウィンドウの描画を一度普通にさせて、その描画内容を取得し、ぼやかして、自分のウィンドウ描画と混ぜるわけですよね。難しいか、できたとしてもパフォーマンスの低下を招くのがオチだと思っています。(他のウィンドウに描画させ、取得する部分は API 使いまくりになりそう)
    OS が用意している仕組みはレイヤードウィンドウのように「ぼかす」がない処理だけです。

    2012年6月3日 2:04
  • こんにちは、VB User1 さん。
     
    フォーラムのご利用ありがとうございます。オペレーターの山本です。
    参考になる情報をいただいているように思われましたので、勝手ながら私のほうで一旦回答としてマークさせていただきました。
    アドバイスくださったみなさん、情報ありがとうございます。

    いただいた情報の中で、解決に役立った投稿や、参考になる情報など有効な情報には回答としてマークすることをお願いしています。
    今後、同じ問題でこのスレッドを参照される方にも、有効な情報を活用いただけるかと思いますので、ご協力よろしくお願いいたします。
    _____________________
    日本マイクロソフト株式会社 フォーラム オペレーター 山本 春海

    2012年6月29日 9:06