SourceChord

C#とXAML好きなプログラマの備忘録。最近はWPF系の話題が中心です。

.net4.5でAero効果の効いたウィンドウを作る

という内容でブログ書こうとしたら、
今使ってるWin8のPCでは背景が透けたGlassエフェクトのウィンドウは作成できないことに気付きました。

ということで、以下はvista or Win7 & .net4.5を使った簡単なGlassエフェクト付ウィンドウの作り方です。

■補足
Win8では、Aero-glassのテーマがなくなっているため、
vistaやwin7で使われていた、すりガラスっぽい半透明のウィンドウは表示できないようです。

簡単な半透過ウィンドウの作り方

以前、以下のような方法で、Glassエフェクトを付けた半透過ウィンドウを作りました。
http://d.hatena.ne.jp/minami_SC/20120730/1343665730

しかし、.net4.5では、WindowChromeというクラスが標準ライブラリに追加されています。
この、WindowChromeクラスのGlassFrameThicknessプロパティを設定すれば、ウィンドウのクライアント領域までGlassエフェクトを適用できます。
(.net4以前では、WPF Shell Integration Libraryを使うことで、同様のことができるようです。)

やってることは、以下の2点です。

  1. タグを設定
  2. Windowの背景色をTransparentに設定
<Window x:Class="WpfApplication1.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"
        Background="Transparent">
    <WindowChrome.WindowChrome>
        <WindowChrome GlassFrameThickness="-1"/>
    </WindowChrome.WindowChrome>
    <Grid>
        
    </Grid>
</Window>

Windows8での実行結果

最初に書いたように、Windows8でこのコードを実行しても、ウィンドウは半透明になりません。
↓のような不透明なウィンドウができるだけです。

うーん、時代の流れを考えると、半透過ウィンドウなんて極力使わない方がいいのかなぁ。。