2009年7月20日 星期一

利用WPF製作Gadget

利用WPF產生一個Transparency Window或是Non-Rectangular Window , 還滿簡單做到, 因此, 你可以很容易製作出一些桌面上的小工具(Gadget).


[圖] 手機Gadget

資料來源:
CodeProject - 3D gadgets for your WPF Desktop


下面步驟說明如何製作一個小
Gadget. 首先, 產生一個WPF Windows Application的專案. 然後, 修改Window Property.

1. Background = Transparent
背景顏色要設成透明色




2. AllowsTransparency = True
如果
AllowsTransparencyFalse的話, Window Background將只會被設成黑色.



3. Window Style = None
將視窗樣式設定成沒有邊框.



如果不這麼做的話, 執行此程式後, 會出現一個Exception. 告訴你當AllowsTransparency為True時,WindowStyle必須為True





部分XAML檔如下所示:

"http://schemas.microsoft.com/winfx/2006/xaml/presentation"
WindowStyle="None"
AllowsTransparency="True"
Background="Transparent">
...


4. Mouse drag
如果要用滑鼠移動透明視窗, 必須另外加入Mose Event.

在XAML檔中加入
MouseLeftButtonDown="Window_MouseLeftButtonDown"

點選C#檔,Window_MouseLeftButtonDown函式中, 加入下面程式碼(在視窗上點選滑鼠左鍵,可拖曳此視窗)

private void Window_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
this.DragMove();
}


5. Close Application
在視窗呈現完全透明情況下,視窗的非工作區的一些選項 ([關閉] 功能表、[最小化]、[最大化] 和 [還原] 按鈕等等) 就無法使用, 因此, 如果要關閉視窗, 就需要額外設計一個close的button.

Close Button的XAML檔如下所示:


<button dock="Right" margin="5" height="Auto" width="37" name="button1" click="button1_Click" verticalalignment="Center" background="Red" foreground="White" fontsize="16">X</button>



點選C#檔, 在
button1_Click函式中, 加入下面程式碼(點選關閉的button後, 關閉此視窗)

private void button1_Click(object sender, RoutedEventArgs e)
{
this.Close();
}


執行結果如下所示:


[NOTE]如果你想要此Gadget不要出現Taskbar, 可以作以下的設定:
ShowInTaskbar="False" Topmost="True"


沒有留言:

張貼留言