WPF に挑戦

よし、WPF に挑戦するぞと。
そういえば .NET 3.5 ならグラス効果をマネージしているのかな?

WPF アプリケーションへのグラス フレームの拡張

アンマネージのままなのね…
でもこれ v8.0 のヘルプだからもっと探せば見つかるかなぁ?

つーか間違っているぞこのコード。
System.Drawing 名前空間は WPF から参照できないヤン!

まあそりゃ System.Drawing は GDI+ のラッパーだから当然なのだが。
WPF は DirectX を直接呼んでいるっぽいし。

まあいいや、チト書き換えて実験しよう。

using System.Runtime.InteropServices;
using System.Windows.Interop;
をお忘れ無く。

つーか System.Windows.Interop; がデフォで付かないって何故?
これが無いと WPF で作成したウインドに対し何もできんわな。

ところで VS2008 ののコピペがとってもインテリジェンスなのに感動した。
全自動でインデントを合わせてくれるじゃん、後で直す必要が無い。
C# 編集では前からなの?C++ と HTML しか使わなかったのでよく解らない。

しかし宣言ミスとかでミミズマークが付く機能はリアルタイム監視じゃないのね。
Visual Web Developer はリアルタイムで指摘してくれるので調子が狂う。

例の文字列表示の発光効果は Label のプロパティで簡単に作れる。
BitmapEffect を OuterGlowBitmapEffect にして色を選ぶだけ。
描写負荷は軽くなっているのかな?実験してみないとなんともいえない。

mainWindowSrc.CompositionTarget.BackgroundColor = Color.FromArgb(0, 0, 0, 0);

の部分がどうしても気になるんだが。
SDK の時は真っ黒を指定なんだが、これじゃ完全に透明だ。

wpf01.png

ほらやっぱり…
てか本当に完全な透明だ、動かしたらキチンと背景どおりに変わる、なんだこりゃ。
試しにアルファ指定を 255 にしたら半透過部分も普通に黒くなってしまう。
むー、WPF は今までと全然違う考え方でウインドを作る必要がありそうだ。

なんか Cinema を作って勉強したことが全部無駄になってしまいそう…