ページ

2006年3月6日月曜日

非矩形のウインドウ Windows.Forms/WPF

Creating Non-Rectangular Splash Screen - using Alpha Channel
Windows.Forms のフォームでレイヤードウインドウにするサンプルコードが紹介されています。レイヤードウインドウっていうのは、ウインドウスタイルに WS_EX_LAYERED を追加しておいて UpdateLayeredWindow API を使ってビットマップを指定してやればウインドウをそのビットマップの形にできるという機能です。ちなみに、レイヤードウインドウは Windows 2000 以降でサポートされています。
ただ、別にレイヤードウインドウを使わなくても GraphicsPath を使えばほとんど同じことができると思いますけど (「四角くないフォームを作る方法」 とか)


Part II : Creating Non-Rectangular Splash Screen - using WPF
WPF で四角くないウインドウを作るコードが紹介されています。HwndSourceParameters で名称と幅、高さを指定しておいて HwndSource で WPF なウインドウが生成できるということかな?(最初の HwndSourceParameters s = new HwndSourceParameters("visual"); っていうのは消し忘れだと思う。いらないんじゃないかな) で、XamlReader を使って .xaml を読み込んでそのウインドウの中身を指定してあげると。へぇ、こんなことができるんだなぁ。


Part III: Non-Rectangular Window in WPF (use of Thumb)
さらに上記の WPF な四角くないウインドウを Thumb を使ってドラッグで移動できるようにするコードが紹介されています。ついでに今度は .xaml を読み込むんじゃなくて XAML に相当する内容をコードで作っているみたいですね。

0 件のコメント:

コメントを投稿