通常在實作系統的時候,為了配合不同的需求,可能會需要自訂游標的形狀,雖然WPF中有Cursors類別可以用,但是提供的游標仍然有限,所以用圖片來當作游標,或是用XAML寫出來的UserControl來當作游標,似乎就成為不錯的選擇。
這次就來介紹怎麼在WPF中覆寫原來的系統游標,以自訂的游標取代。
通常在實作系統的時候,為了配合不同的需求,可能會需要自訂游標的形狀,雖然WPF中有Cursors類別可以用,但是提供的游標仍然有限,所以用圖片來當作游標,或是用XAML寫出來的UserControl來當作游標,似乎就成為不錯的選擇。
這次就來介紹怎麼在WPF中覆寫原來的系統游標,以自訂的游標取代。
首先,我們需要實作一個CursorHelper類別,用來覆寫原來的系統游標,而這個類別會使用到System.Drawing類別庫,所以別忘記引用這個類別庫喔~
接著就是建立CursorHelper.cs啦(這邊就不詳述了,直接提供原始碼供各位服用)~
原理是透過Window的API,將UIElement轉為Bitmap去覆寫作業系統內建的游標 (但是因為會轉成Bitmap,所以如果XAML中套用有動畫效果的話,動畫將不會起作用)。
用法也相當的簡單,只要呼叫CursorHelper.CreateCursor,傳入UIElement(可以直接像範例一樣實作自己的UserControl當做游標,並依照需求給予游標頂點的位移值就行啦~
我自己寫了一個小範例,大概長得像下面的樣子:
不過這次的範例如果要放上來讓大家體驗的話,必需要將專案發佈而且設定為Full Trust Application才行,所以就只先提供原始碼讓有興趣的朋友們自行體驗啦!!~
範例原始碼在此,請自行服用: