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