WPF 4 開發Windows 7 工作列(Overlay Icon、Thumbnail Toolbar、Progress Bar)

來源:互聯網
上載者:User

     在上一篇我們介紹了如何在WPF 4 中開發Windows 7 捷徑清單,本篇將繼續針對WPF 4 中工作列其他功能:覆蓋表徵圖(Overlay Icon)、進度條(Progress Bar)、縮圖工具列(Thumbnail Toolbar)進行研究。對於這些功能的API 開發可參考《Windows 7 工作列開發系列匯總》。

TaskbarItemInfo

     在System.Windows.Shell 命名空間中,TaskbarItemInfo 類包含的上述所有Windows 7 工作列開發功能,通過它我們可以自訂軟體工作列的各種功能,其類成員可參考:TaskbarItemInfo Members。

ThumbButtonInfo

     同樣在System.Windows.Shell 命名空間中,ThumbButtonInfo 類為我們提供了開發縮圖工具列的功能,其類成員可參考:ThumbButtonInfo Members,使用方式在下文中將會介紹。

覆蓋表徵圖(Overlay Icon)

     通過API 開發Overlay Icon 時,需要簡單調用SetOverlayIcon 方法即可。在WPF 4 中開發仍然很簡單,只需在XAML 中為TaskbarItemInfo 類的Overlay 屬性賦上Icon 值便可實現,如下代碼所示:

<Window.TaskbarItemInfo>        <TaskbarItemInfo x:Name="taskBar"                          Overlay="Resources/Question.ico"                         Description="Taskbar Items Sample">        </TaskbarItemInfo></Window.TaskbarItemInfo>

這樣就在程式表徵圖上增加了一個“問號表徵圖”:

縮圖工具列(Thumbnail Toolbar)

     下面我們為程式增添一個縮圖工具列,向其中加入盾牌按鍵(Safe.ico),點擊後便更換掉的“問號表徵圖”。首先在前面代碼的基礎上增加ThumbButtonInfo 內容為工具列裝載按鍵:

<Window.TaskbarItemInfo>        <TaskbarItemInfo x:Name="taskBar"                          Overlay="Resources/Question.ico"                         Description="Taskbar Items Sample">            <TaskbarItemInfo.ThumbButtonInfos>                    <ThumbButtonInfo x:Name="changeIcon"
DismissWhenClicked="True" Click="changeIcon_Click" Description="Change overlay icon" ImageSource="Resources/Safe.ico"/> </TaskbarItemInfo.ThumbButtonInfos> </TaskbarItemInfo></Window.TaskbarItemInfo>

     在代碼中DismissWhenClicked 的作用是決定點擊按鍵後縮圖視窗是否關閉(預設為False);Description 為按鍵描述;ImageSource 為按鍵表徵圖;Click 點擊時會觸發相應事件。下面代碼即為點擊後觸發的changeIcon_Click 事件:

private ImageSource IconToBitmapSource(Icon img) {    Bitmap bitmap = img.ToBitmap();    IntPtr hBitmap = bitmap.GetHbitmap();    ImageSource bitmapSource =                Imaging.CreateBitmapSourceFromHBitmap(                     hBitmap, IntPtr.Zero, Int32Rect.Empty,                     BitmapSizeOptions.FromEmptyOptions());    return bitmapSource;}private void changeIcon_Click(object sender, EventArgs e){    taskBar.Overlay = IconToBitmapSource(Win7TaskbarDemo.Properties.Resources.Safe); }

     代碼中IconToBitmapSource 是將System.Drawing.Icon 轉換為System.Windows.Media.ImageSource 的函數,可將程式中的Icon 圖片轉化為ImageSource 賦值給Overlay 使用。如果想取消Overlay 表徵圖,就將taskBar.Overlay 設為null。可見對於Overlay 的替換也是十分簡便的。

 運行效果      點擊後效果

進度條(Progress Bar)

     在WPF 4 中工作列進度條狀態仍然是五種(如下表所示)。為了改變工作列進度條狀態,我們再往縮圖工具列中加入一個按鍵,使其在點擊時改變進度條顏色。

<Window.TaskbarItemInfo>        <TaskbarItemInfo x:Name="taskBar"                          Overlay="Resources/Question.ico"                         Description="Taskbar Items Sample">            <TaskbarItemInfo.ThumbButtonInfos>                <ThumbButtonInfoCollection>                    <ThumbButtonInfo x:Name="changeIcon"                                     DismissWhenClicked="True"                                     Click="changeIcon_Click"                                     Description="Change overlay icon"                                     ImageSource="Resources/Safe.ico"/>                    <ThumbButtonInfo x:Name="progressState"                                     DismissWhenClicked="False"                                     Click="progressState_Click"                                     Description="Change progress state"                                     ImageSource="Resources/Error.ico"/>                </ThumbButtonInfoCollection>            </TaskbarItemInfo.ThumbButtonInfos>        </TaskbarItemInfo></Window.TaskbarItemInfo>

為progressState_Click 事件增加一些內容,通過ProgressState 調整進度列狀態;用ProgressValue 設定進度值:

private void progressState_Click(object sender, EventArgs e){    taskBar.ProgressState = TaskbarItemProgressState.Error;    taskBar.ProgressValue = 0.4;}

點擊前後的對比圖:

     

縮圖調整

     在新WPF 4 中我們可以通過TaskbarItemInfo 的ThumbnailClipMargin 屬性來調整程式視窗在縮圖中顯示的內容。如所示,預設情況下縮圖會顯示程式視窗全貌。下面通過在XAML 中設定ThumbnailClipMargin 值使縮圖只顯示“Reset”按鍵部分。

     

<Window.TaskbarItemInfo>        <TaskbarItemInfo x:Name="taskBar"                         ThumbnailClipMargin="120,90,120,40"                         Overlay="Resources/Question.ico"                         Description="Taskbar Items Sample" /></Window.TaskbarItemInfo>

     至此,在WPF 4 中開發Windows 7 工作列的內容就介紹完了,後續將會介紹一些WPF 4 的其他新功能,敬請關注!下周的這個時候VS2010 就正式發布了,到時大家也可以親身的體驗一下~

參考資料

1. Windows 7 工作列開發系列匯總

http://www.cnblogs.com/gnielee/archive/2010/03/21/1691101.html

2. TaskbarItemInfo Class

http://msdn.microsoft.com/en-us/library/dd783827(v=VS.100).aspx

3. ThumbButtonInfo Class

http://msdn.microsoft.com/en-us/library/dd783604(v=VS.100).aspx

原始碼下載

Win7TaskbarDemo.VS2010.zip

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.