新版本WPF功能 彰顯賞心悅目的圖形
與之前的版本相比,Visual Studio 2010 RC中在WPF開發方面有多個不同之處,特別是在圖形、動畫及媒體功能上,通過這些諸多改進,更能體現出WPF在開放應用中的優勢。
WPF提供高級繪圖和動畫功能,以前只能從專用庫(具體來說,就是MicrosoftWindows圖形設備接口(GDI)和MicrosoftWindowsGDI+)使用這些功能?,F在,WPF提供對多媒體、向量圖形、動畫和內容撰寫的集成支持,使得開發人員可以輕松地生成悅目的用戶界面和內容。使用MicrosoftVisualStudio.NET或者甚至文本編輯器(如Microsoft記事本),可以創建矢量圖形或復雜的動畫并將媒體集成到應用程序中。
WPF在圖形和多媒體方面的新增功能,向開發人員引進了新的圖形功能,這些功能具有如下優點:
與分辨率和設備無關的圖形:WPF圖形系統使用與設備無關的單元來支持分辨率和設備獨立性。每個與設備無關的像素都會隨系統上的每英寸點數設置自動縮放。
更高的精度:WPF坐標系使用雙精度值,而不使用浮點值。轉換值和不透明度值也是使用雙精度值來表示。WPF還支持更廣泛的顏色域(scRGB),并為管理來自不同顏色空間的輸入提供了集成的支持。
高級圖形和動畫支持:WPF通過為您管理場景圖簡化了圖形編程;您無需再擔心場景處理、呈現循環和雙線性內插算法。WPF提供了命中測試支持、集成的動畫系統和全面的字母合成支持。
硬件加速:WPF圖形系統旨在利用圖形硬件來最小化CPU使用率。
WPF提供了一個極好的自定義對象模型,允許運用各種風格和已存在的各種元素模板。該模型是一個令人滿意的新模型,允許將幾乎任何元素放置在另一個元素中。通過這個新功能,在整個創建自定義控件的過程中,都不會遇到問題。當然,任何事物都不是絕對的,使用WPF創建自定義控件,也有可能會遇到一些問題。本部分內容包括在什么情況下需要考慮創建自定義控件,以及如何創建自定義控件。
接下來,將進入WPF應用程序的企業應用開發部分。使用WPF可以創建兩種風格的應用程序:基于Windows的單機運行的應用程序與基于Web的應用程序。這兩種類型的程序基于相同的代碼,即XAML與.NET。這意味著為應用程序指定目標主機環境,只需要簡單改變工程文件的設置并管理這些配置即可。這項功能是非常強大的。
對于開發人員和設計人員,WPF提供了統一的UI平臺,因此他們只需學習一個模式,就可以獲得無限可能的UI體驗。對于.NET開發人員,其框架是熟悉的,并且它最終將減少提供最佳用戶體驗和通信邏輯所需的代碼行數。對于設計人員,WPF提供的平臺可消除內容、媒體和應用程序之間的邊界。最重要的是,WPF可以使開發人員和設計人員同步緊密地合作來快速提供不同的連通體驗。
當WPF和Silverlight越來越受到.NET開發人員重視的時候,兩者間的界限也越來越模糊。WPF支持多種類型的觸發器。一個簡單的觸發器附加到依賴關系屬性后,當觸發器條件滿足的時候便會自動修改樣式。除了簡單觸發器以外,WPF也支持可響應路由事件或使用數據綁定的觸發器。Silverlight使用視覺狀態管理器代替觸發器。WPF當前并不提供該技術,但會在WPF4.0中添加。
由于名稱的關系,WPF與WPF/E一直被認為是類似的東西。其實兩者除了呈現UI的部分使用的是共通語言XAML之外,兩者在本質上有很大的不同。甚至,XAML對WPF與Silverlight有不同的意義,也不能算是兩者間共通的語言。
XAML對WPF來說,是一種把.NET程序語言改用XML來描述的方式。換句話說,XAML用在WPF上,像是另外一種程序語言。與C#,VB,IronPython相似。所以XAML能做的,C#,VB一樣都可以做到。但是反過來,C#,VB能做的,XAML不一定能做到,因為XAML是為了配合開發工具,特別設計出來的一種語言,本身有他的局限性,所以還是得配合正規的程序語言,才能完成一個真正有用的程序。
但是以目前XAML所具備的能力,不靠C#,VB而做到平常簡單Flash可以做到的,應該是沒啥問題。因此,Application=Code+Markup的作者Petzold才會把這本書的結構寫成先用以C#來寫WPF程序,后半部才介紹XAML。避免大家誤解WPF=XAML,XAML還可以用在WF上,所以并不局限于WPF,如果用了XAML,以為這就是WPF的全部,就大錯特錯。
然而,XAML對Silverlight來說,本質比較貼近SVG。XAML用來描述構成畫面的結構樹,然后配合Javascript去操作這顆表示UI的樹,以達到互動的效果。所以對Silverlight來說,XAML像是用來擴充HTML/CSS原本不足的一組Tag。就像Firefox之中,一樣可以用Javascript去操作SVG所描述的畫面,藉以達成多媒體效果。
WPF支持多種類型的觸發器。一個簡單的觸發器附加到依賴關系屬性后,當觸發器條件滿足的時候便會自動修改樣式。除了簡單觸發器以外,WPF也支持可響應路由事件或使用數據綁定的觸發器。
【編輯推薦】