-
WPF
鎖定
- 中文名
- Windows呈現基礎
- 外文名
- Windows Presentation Foundation
- 類 型
- 圖形系統
WPF定義
WPF 為Windows Presentation Foundation的首字母縮寫 ,中文譯為“Windows呈現基礎”,其原來代號為“Avalon”,因與“我佩服”拼音首字母組合一樣,國內有人調侃地稱之為“我佩服”。由 .NET Framework 3.0 開始引入,與 Windows Communication Foundation及 Windows Workflow Foundation並行為新一代 Windows操作系統以及 WinFX 的三個重大應用程序開發類庫。
WPF是微軟新一代圖形系統,運行在.NET Framework 3.0及以上版本下,為用户界面、2D/3D 圖形、文檔和媒體提供了統一的描述和操作方法。基於DirectX 9/10技術的WPF不僅帶來了前所未有的3D界面,而且其圖形向量渲染引擎也大大改進了傳統的2D界面,比如Vista中的半透明效果的窗體等都得益於WPF。 程序員在WPF的幫助下,要開發出媲美Mac程序的酷炫界面已不再是遙不可及的奢望。 WPF相對於Windows客户端的開發來説,向前跨出了巨大的一步,它提供了超豐富的.NET UI 框架,集成了矢量圖形,豐富的流動文字支持(flow text support),3D視覺效果和強大無比的控件模型框架。
Windows Presentation Foundation(以前的代號為“Avalon”)是 Microsoft 用於 Windows 的統一顯示子系統,它通過 WinFX 公開。它由顯示引擎和託管代碼框架組成。Windows Presentation Foundation 統一了 Windows 創建、顯示和操作文檔、媒體和用户界面 (UI) 的方式,使開發人員和設計人員可以創建更好的視覺效果、不同的用户體驗。Windows Presentation Foundation 發佈後,Windows XP、Windows Server 2003 和以後所有的 Windows操作系統版本都可以使用它。
WPF是.Net Framework 3.0裏新推出的主打功能之一,加上Vista集成.Net Framework 3.0,改寫Winform時代,可謂是影響巨大!WPF是一套API函數庫,由.Net FrameWork3.0以上版本類庫運行。
WPF是Windows操作系統中一次重大變革,與早期的GDI+/GDI不同。WPF是基於DirectX引擎的,支持GPU硬件加速,在不支持硬件加速時也可以使用軟件繪製。高級別的線程繪製可以提高使用者的體驗。自動識別顯示器分辨率並進行縮放。而Vista就是一個非常典型的例子。
[1]
WPF特點介紹
對於WPF最重要的特色,矢量圖的超強支持 。兼容支持2D繪圖,比如矩形、自定義路徑,位圖等。文字顯示的增強,XPS和消鋸齒。三維強大的支持。包括3D控件及事件,與2D及視頻合併打造更立 體效果。漸變、使用高精確的(ARGB)顏色,支持浮點類型的像素座標。這些對GDI+遠遠不及的。
靈活、易擴展的動畫機制!.Net Framework 3.0類庫提供了強大的基類,只需繼承就可以實現自定義程序使用繪製。接口設計非常直觀,完全面向對象的對象模型。使用對象描述語言XAML。使用開發工具的可視化編輯。
您可以使用任何一種.Net編程語言(C#,VB NET等開發語言)進行開發。XAML主要針對界面的可視化控件描述,成生進會分析成.cs或.vb文件,並最後將編譯為CLR中間運行語言。
[1]
WPF組成結構
Windows Presentation Foundation 由兩個主要部分組成:引擎和編程框架。
1.Windows Presentation Foundation引擎。Windows Presentation Foundation 引擎統一了開發人員和設計人員體驗文檔、媒體和 UI 的方式,為基於瀏覽器的體驗、基於窗體的應用程序、圖形、視頻、音頻和文檔提供了一個單一的運行時庫。Windows Presentation Foundation 使得應用程序不僅能夠充分利用現代計算機中現有的圖形硬件的全部功能,而且能夠利用硬件將來的進步。例如,Windows Presentation Foundation 的基於矢量的呈現引擎使應用程序可以靈活地利用高 DPI監視器,而無需開發人員或用户進行額外的工作。 同樣,當 Windows Presentation Foundation 檢測到支持硬件加速的視頻卡時,它將利用硬件加速功能。
2.Windows Presentation Foundation 框架。Windows Presentation Foundation 框架為媒體、用户界面設計和文檔提供的解決方案遠遠超過開發人員現在所擁有的。Windows Presentation Foundation 的設計考慮了可擴展性,使開發人員可以完全在 Windows Presentation Foundation引擎的基礎上創建自己的控件,也可以通過對現有 Windows Presentation Foundation 控件進行再分類來創建自己的控件。Windows Presentation Foundation 框架的核心是用於形狀、文檔、圖像、視頻、動畫、三維以及用於放置控件和內容的面板的一系列控件。這些“自有控件”為開發下一代用户體驗提供了構造塊。
Microsoft 在引入 Windows Presentation Foundation 的同時,還引入了 XAML,這是一種公開表示 Windows應用程序用户界面的標記語言,可使開發人員和設計人員用來構建和重用 UI 的工具更加豐富。對於 Web 開發人員,XAML 提供了熟悉的 UI 説明模式。XAML 還使 UI 設計從基礎代碼中分離出來,從而使開發人員和設計人員之間的合作更加緊密。
WPF選擇理由
為什麼選擇 Windows Presentation Foundation?
對於企業:Windows Presentation Foundation 實現了改進的客户關係和不同的應用程序。通過提供能夠快速提供更好的視覺效果、獨特的用户體驗的技術,來建立與客户的密切關係,使企業可以建立穩定的數字客户關係和獨特的品牌化機會。而且,由於 Windows Presentation Foundation 是窗體、文檔、視頻、三維以及其他功能的綜合,因此企業可以創建持久的用户體驗解決方案,並集成到客户的日常活動中。
對於開發人員和設計人員:Windows Presentation Foundation 提供了統一的 UI 平台,因此他們只需學習一個模式,就可以獲得無限可能的 UI 體驗。
對於 .NET開發人員:其框架是熟悉的,並且它最終將減少提供最佳用户體驗和通信邏輯所需的代碼行數。
對於設計人員:Windows Presentation Foundation 提供的平台可消除內容、媒體和應用程序之間的邊界。最重要的是,Windows Presentation Foundation 可以使開發人員和設計人員同步緊密地合作來快速提供不同的連通體驗。
WPF響應程度
國內即時通訊領導商騰訊Tencent曾經發布過一款基於WPF的QQ 概念版(QQ 概念版):QQ 概念版是騰訊首款NUI(自然用户交互)產品,全面實現了多點觸摸操作。在實現IM的基礎功能外,QQ概念版還推出了動感相框、動態背景、多Tab聊天窗口、3D交互、矢量界面、桌面好友等一系列新功能、新體驗以及Windows7的重要新特性。
WPF運行環境
WPF可以運行在三種環境下面,如下:
只需要.Net Framework 3.0以上版本支持即可!
2、 RIA分佈式環境,服務器與客户端瀏覽器下載使用ActiveX插件方式解釋執行的。微軟更名為Silverlight,由於安全原因,微軟提取精簡版.Net Framework到Silverlight中獨立運行,精簡了很多類庫。
3、瀏覽器承載的應用程序(稱為 XAML 瀏覽器應用程序 (XBAP)),您可以創建能夠使用超鏈接(Hyperlink 類)導航的頁面 (Page) 和頁函數 (PageFunction(Of (T)))。
[1]
WPF服務和支持
隨着Vista RTM的發佈,微軟新一輪的技術推廣已經開始。其實在此之前,WPF已經有很大的推廣,因為CTP版本已經發布了有一段日子了。當然很多開發人員主要以技術研究為主,也有少數公司已經開始從事基於WPF的產品研發工作。
WPF前景分析
WPF其實不僅僅是圖形引擎而已,它將給Windows應用程序的開發帶來一次革命,因為新的架構提供了一種全新的開發模式。當然對於普通用户而言,最直觀的就是界面越來越漂亮,看起來越來越舒服了;但對於開發人員而言,界面顯示和代碼將更好的得到分離,這與從前的桌面應用程序開發有很多不同(界面設置和代碼是融合在一起的),這是比較具有革命性的改變之一。
還有就是桌面應用程序和瀏覽器應用程序的融合,根據ms的承諾,正在開發中的WPF/E,即WPF Everywhere版本,將為基於WPF的應用程序提供全面的瀏覽器支持,這意味着未來開發出的應用程序將可以基於瀏覽器在不同的操作系統上運行,根據WPF/E開發組的定義,WPF/E仍然是WPF的子集,而不是後繼版本。總體而言,WPF的前景應該是一片光明。
WPF控件
WPF實質
先從UI上分析,UI的功能是讓用户觀察和操作數據,為了能顯示數據和響應用户的操作通知程序(通過事件來通知,如何處理事件又是一系列的算法),所以控件就是顯示數據和響應用户操作的UI元素,也即:控件就是數據和行為的載體。
[2]
WPF數據驅動UI
什麼是數據驅動UI呢?我們知道傳統的GUI界面都是由windows消息通過事件傳遞給程序,程序根據不同的操作來表達出不同的數據體現在UI界面上,這樣數據在某種程度上來説,受到很大的限制。WPF中是數據驅動UI,數據是核心,處於主動的,UI從屬於數據並表達數據,是被動的。WPF數據第一,控件第二。
[2]
WPF分類
雖然控件沒有數據重要,但是還是比較重要的,畢竟是門面啊,只是在數據面前,它比較"有禮貌"。控件有很多,但是如果仔細去分析,也是有規律可循的,根據其作用,我們可以把控件分為6類:
- 佈局控件:是可以容納多個控件或者嵌套其他佈局的控件,用於在UI上組織和排列控件。其父類為Panel。
- 內容控件:只能容納一個控件或者佈局控件作為他的內容。所以經常藉助佈局控件來規劃其內容。其父類為ContentControl。
- 帶標題內容控件:相當於一個內容控件,但是可以加一個標題,標題部分也可以容納一個控件或者佈局,其父類為HeaderedContentControl。
- 條目控件:可以顯示一列數據,一般情況下,是數據的類型是相同的。其共同的基類為ItemsControl。
- 帶標題的條目控件:和上面的帶標題內容控件類同,其基類為HeaderdeItemsControl。
當這些控件不能夠滿足需求的時候,也可以從受信任的來源下載控件,並通過添加引用來導入自定義控件。支持WPF的第三方控件有:ComponentOne Studio,ActiveReports,visifire,Stimulsoft Report等。
- 參考資料
-
- 1. Vista 用户界面框架 WPF .開源社區網[引用日期2012-08-18]
- 2. 劉鐵猛.深入淺出WPF:中國水利水電出版社,2010
- 3. WPF .NET 8.0.1 .WPF官方倉庫.2023-12-01[引用日期2024-01-30]