Windows 7 工作列開發 之 縮圖預覽(Thumbnail)

來源:互聯網
上載者:User

       上一篇我們對工作列進度條的開發有了相應的瞭解,本篇將對縮圖預覽功能進行研究。提起縮圖預覽相信使用過Windows 7 的朋友一定不會陌生,它可以說是Windows 7 的一大亮點。不論啟動並執行程式是否處於活動狀態,只要將滑鼠放在工作列表徵圖上便會出現當前程式的預覽效果。如所示我們可以快速的在IE 縮圖中找到想看的網頁。當然在Windows API 中也提供了許多開發縮圖的工具,下面我們來看看如何使用它們。

 

TabbedThumbnail.TabbedThumbnail 方法

       在預設情況下Windows 7 會顯示應用程式介面(如),如果想替換或增加新的縮圖,首先應通過TabbedThumbnail 類的TabbedThumbnail 方法建立一個新的縮圖(Thumbnail)。

 

在TabbedThumbnail 類中,有三個TabbedThumbnail 方法可以建立縮圖:

//設定父視窗和子視窗/控制項public TabbedThumbnail(IntPtr parentWindowHandle, IntPtr windowHandle){    if (parentWindowHandle == IntPtr.Zero)        throw new ArgumentException("Parent window handle cannot be zero.", 
"parentWindowHandle"); if (windowHandle == IntPtr.Zero) throw new ArgumentException("Child control's window handle cannot be zero.",
"windowHandle"); WindowHandle = windowHandle; ParentWindowHandle = parentWindowHandle;}//設定父視窗和子控制項public TabbedThumbnail(IntPtr parentWindowHandle, Control control){ if (parentWindowHandle == IntPtr.Zero) throw new ArgumentException("Parent window handle cannot be zero.",
"parentWindowHandle"); if (control == null) throw new ArgumentNullException("control"); WindowHandle = control.Handle; ParentWindowHandle = parentWindowHandle;}//設定父視窗或WPF子控制項,以及兩者的位移量public TabbedThumbnail(Window parentWindow, UIElement windowsControl,
Vector peekOffset){ if (windowsControl == null) throw new ArgumentNullException("control"); if (parentWindow == null) throw new ArgumentNullException("parentWindow"); WindowHandle = IntPtr.Zero; WindowsControl = windowsControl; WindowsControlParentWindow = parentWindow; ParentWindowHandle = (new WindowInteropHelper(parentWindow)).Handle; PeekOffset = peekOffset;}

 

TabbedThumbnail.AddThumbnailPreview 方法

通過AddThumbnailPreview 方法將TabbedThumbnail 添加到工作列縮圖中:

public void AddThumbnailPreview(TabbedThumbnail preview){… …}

 

TabbedThumbnailManager.SetActiveTab 方法

       通過SetActiveTab 方法將指定的縮圖、視窗控制代碼、Form控制項、WPF控制項設定為活動狀態。例如,在IE 中我們開啟了多個網頁標籤,那麼SetActiveTab 可以將其中一個標籤設為當前瀏覽頁。

public void SetActiveTab(TabbedThumbnail preview){… …}public void SetActiveTab(IntPtr windowHandle){… …}public void SetActiveTab(Control control){… …}public void SetActiveTab(UIElement windowsControl){… …}

 

TabbedThumbnailManager.GetThumbnailPreview 方法

通過GetThumbnailPreview 方法擷取指定的視窗控制代碼、Form控制項、WPF控制項的縮圖(TabbedThumbnail):

public TabbedThumbnail GetThumbnailPreview(IntPtr windowHandle){… …}public TabbedThumbnail GetThumbnailPreview(Control control){… …}public TabbedThumbnail GetThumbnailPreview(UIElement windowsControl){… …}

 

TabbedThumbnailManager.RemoveThumbnailPreview 方法

通過RemoveThumbnailPreview 方法將指定的縮圖、視窗控制代碼、Form控制項、WPF控制項從工作列縮圖中刪除:

public void RemoveThumbnailPreview(TabbedThumbnail preview){… …}public void RemoveThumbnailPreview(IntPtr windowHandle){… …}public void RemoveThumbnailPreview(Control control){… …}public void RemoveThumbnailPreview(UIElement windowsControl){… …}

 

TabbedThumbnailManager.IsThumbnailPreviewAdded 方法

通過IsThumbnailPreviewAdded 方法判斷的縮圖、視窗控制代碼、Form控制項、WPF控制項是否已添加,並返回Bool 值:

public bool IsThumbnailPreviewAdded(TabbedThumbnail preview){… …}public bool IsThumbnailPreviewAdded(IntPtr windowHandle){… …}public bool IsThumbnailPreviewAdded(Control control){… …}public bool IsThumbnailPreviewAdded(UIElement control){… …}

 

TabbedThumbnailManager.SetTabOrder 方法

       通過SetTabOrder 方法調換兩個TabbedThumbnail 前後位置,注意第一個TabbedThumbnail 將調換到第二個TabbedThumbnail 的前面。

public void SetTabOrder(TabbedThumbnail previewToChange, 
TabbedThumbnail insertBeforePreview){… …}

 

效果示範

       通過以上方法就能夠隨心所欲的設定縮圖了,下面就將上面中的縮圖改為Windows Logo 表徵圖,其中ui 即為XAML 代碼中控制項的名稱(x:Name):

TabbedThumbnail newPreview = new TabbedThumbnail(Application.Current.MainWindow, ui, peekOffect);TaskbarManager.Instance.TabbedThumbnail.AddThumbnailPreview(newPreview);TaskbarManager.Instance.TabbedThumbnail.SetActiveTab(newPreview);

 

 

點擊“Set this image as thumbnail” 前後對比,縮圖變為了<Image> 控制項:

 修改前      修改後

 

點擊“Add another thumbnail” 後,可將<Button> 控制項加入縮圖中:

 

點擊 “Change thumbnail order” 調換縮圖前後位置:

 

       另外,還可以通過TabbedThumbnail.Tooltip 屬性為縮圖添加提示資訊。當滑鼠置於縮圖上方時,將會有相應的ToolTip 顯示:

newPreview.Tooltip = "Welcome to Windows 7";

 

     

 

相關參考資料

1. Windows API Code Pack for .NET Framework

http://code.msdn.microsoft.com/WindowsAPICodePack

2. Thumbnail Toolbars

http://msdn.microsoft.com/en-us/library/dd378460(VS.85).aspx#thumbbars

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.