程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> WPF簡介

WPF簡介

編輯:關於.NET

1.WPF是什麼

WPF是Windows Presentation Foundation 的縮寫,其原來代號為“Avalon”,因“我佩服”拼音首字母組合一樣,國內有人調侃地稱之為“我佩服”。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視覺效果和強大無比的控件模型框架。

業內著名人士驚呼:“這一天終於來了!”

WPF與XAML

20世紀90年代中期,基於SGML,衍生出的XML的應用已變得極為流行。許多開發者把XML視為解決所有計算機開發問題的靈丹妙藥,XML幾乎無處不在。

針對Vista操作系統,微軟提供了專門的界面開發語言XAML(eXtensible Application Markup Language,可擴展應用程序標記語言)。XAML作為微軟Vista操作系統的界面描述語言,它可對WPF程序的所有界面元素進行定制,從而構建炫 麗奪目的軟件界面。

XAML作為界面描述語言(注意是“語言”),它最終會被編譯成.Net後台代碼。因此,它能夠同後台進行邏輯處理的.NET語言如C#、J#、C++、 VB等協同工作,其工作性質類似於ASP.NET中的HTML。XAML的產生,使得界面描述代碼和程序代碼得以分開,從而提高了開發效率並有利於團隊開 發。

同HTML一樣,XAML既可以直接編碼,也可以由專門的工具生成。目前最好的XAML編輯器是Expression Blend,但你也可以使用Windows SDK for Windows Vista中的XAMLPad,但功能卻顯得太簡單。

2.WPF何以令人佩服

一直以來,完美的用戶體驗是桌面應用程序和Web應用程序中的一大障礙。許多開發人員絞盡腦汁將界面設計得美觀炫麗些、互動感強些,但費了九牛二虎之力, 還是差強人意。由於技術上的限制,Web 應用程序無法提供與桌面應用程序同樣豐富的用戶體驗。而隨著電腦與每個人的生活、工作變得密不可分,人們對桌面應用程序的要求也不斷提高。永不滿足的人們 要求桌面應用程序能夠播放視頻、運行動畫、采用二維或三維圖形,以及調用不同的文檔。

想實現這些嗎?那就用WPF!來句流行的廣告詞:用了都說好!

使用 WPF,你可以創建豐富、美妙的連接應用程序,以充分利用 Windows 平台,其中包括 UI、媒體、脫機通信和文檔支持。

先來說說WPF程序的設計制作過程。

一般地,大多數WPF程序都將同時包含XAML代碼和程序代碼。我們首先使用XAML定義程序界面(如前所述,可以手工編寫,也可以采用 Experssion Blend等可視化工具編寫),然後再用.NET語言(C#, VB.Net等)編寫相應的邏輯代碼。和ASP.NET類似,邏輯代碼既可以直接嵌入XAML文件中,也可保存為獨立的代碼文件。

盡管XAML並非設計WPF程序所必須,我們依然可以按照傳統方式使用程序代碼來實現界面設計制作。但是,如果使用XAML,界面設計和邏輯設計就可以完 全分離。這樣,不但使程序的開發和維護更加方便,而且當進行團隊開發時,可真正實現“專業的人做專業的事”,把界面設計交給專業的美術設計師們去完成,而 讓我們精力和時間都寶貴的程序員們專心致志於業務邏輯的實現。真正做到“各盡其能,各施其職”,最終得到一個功能強大、界面一流的WPF程序。這時,就只 等用戶“滿意一笑,開心買單”了。

聽說現在的人都講求實在,講求效益。那麼,WPF給我們的桌面應用程序和Web應用程序帶來了哪些實實在在好處呢?

首先,一套編碼,桌面應用程序與Web應用程序均可運用,這當然就節省成本啦。當然,某些時間,改改適當代碼是必需的。但改動量如此之小,讓你很驚異偉大的Microsoft,讓你不得不服(WPF的“我佩服”傳說就此而來?)。

其次,WPF不僅使美化、多樣化了桌面應用程序,也是使Web變得異彩紛呈。WPF使得3D進 入Web成為可能。比如,你可以使用矢量圖形設計軟件(Illustrator, CorelDraw等, 微軟也有了!叫“Expression Designer”)設計好圖片,然後將圖形輸出或導出成為XAML格式。然後,你可以在Blend中打開XAML文件,制作成動畫,最後生成的也是 XAML。通過.Net語言(如C#)進行編程,還可以控制這些XAML。加上有VS2005/2008優秀的開發環境,可謂之“牛B無敵”。XAML+ C#是大趨勢,必將吸引大批追捧者(從微軟.Net的成功,已從一個側面印證了這一點)。

更多的技術細節。

實際上,WPF 的支持范圍遠不止基本用戶界面應用那麼簡單,還包括:

(1)文檔的變革。之所以稱其為“變革”,是因為它不僅可以使用傳統的屏幕顯示/打印文檔(XPS),而且還可以使用 FlowDocument 標記來顯示流文檔。文檔中不僅可以有文字、圖片、鏈接,還可以有三維動畫、視頻等。試想一下,在某個重要的日子,當你將所有與他/她在一起時浪漫的照片、 溫馨的視頻、甜蜜的話語,加上潇灑的簽名,發揮你豐富的想象力,做成一個動感十足的動畫,或是豐富趣味的互動游戲,將之保存為一份多媒體文檔,在恰當的時 間,利用恰當的機會,把它送給他/她的時候,他/她看到之後又是怎樣一種感覺呢?在恰當的時間、恰當的地點,由恰當的人,做出恰當的事,這就是最“恰當不 過”的了!

(2)圖形:WPF 支持創建二維和三維矢量圖形。對於二維圖形,WPF 提供標准抽象,例如,形狀、畫筆和繪圖筆,同時還允許三維圖形定義模型,以用於指定光線和攝像機位置信息。與早期技術(GDI, GDI+)不同的是,WPF 圖形並不是使用開發人員所必須了解的單獨一組概念進行圖形圖像繪制,用於圖形描述的XAML元素能夠與那些用戶界面其他元素自然組合。比如按鈕,可以是文 字,也可是帶圖形和文字的組合,還可以有更多功能。

(3)圖像:WPF使用 XAML 的圖像標記,可在應用程序中顯示不同格式的圖形,包括 JPEG,GIF,PNG及其他格式。WPF依靠WIC(Windows Imaging Component) 為編解碼器,以及顯示和存儲圖像的軟件提供標准框架。在 WPF 中,通常圖像元素可以與其他元素組合,比如按鈕,可以顯示為圖像按鈕而不是簡單的文本標簽。

(4)多媒體視頻及音頻:WPF可使用MediaElement 標記來顯示不同格式的視頻和音頻,包括 WMV、AVI 和 MPEG等。同樣,此元素也可與其他 XAML 元素相組合,更讓人稱奇的是,你甚至可以使三維立方體的所有側面上都顯示視頻。繼續發揮你的想像力,你可以讓它們動起來,比如3D旋轉,拖動或縮放某一側 面,或是做出你要的效果。在這個世界裡,你可以真正做到“人有多大膽,地有多大產”。

(5)動畫:WPF 提供動態顯示絕大部分用戶界面的內置支持。例如,放大和縮小矩形、更改按鈕大小。與Adobe Flash中時間線類似,你還可以定義包含時間線的情節提要,也可以調整動畫的發生順序。

(6)數據綁定:基於多數程序都需要顯示數據,因此,WPF提供將數據映射到用戶界面元素的自動支持功能。類似asp.net的方式, WPF 可為包含在對象和其他源中的信息提供數據綁定,而且還允許在顯示數據前對其進行排序和篩選。

最後,可讓原有圖形圖像的重復利用,使你原有的投資發揮最大的效益。

由於XAML基於XML,它的格式是開放的。因此市面上出現了大量有用的轉換工具,利用這些工具,可以將你原來在其他設計軟件(如Photoshop、 Illustrator、AffectEffects,其他三維設計軟件等)制作出來的圖形圖像、3D動畫等導出為XAML。

3.針尖對麥芒——WPF給Adobe帶來的挑戰

不是冤家不聚頭。看來,這次微軟與Adobe,是有一場或明或暗的較量了。

微軟大舉擁軍進入UI領域,欲與Adobe一決雌雄?這有可能。微軟的野心,誰也看不透。是不是世界本來很多路,走的人多了,就沒路可走了呢?總之,這種短兵相接的競爭,對廣大用戶而言,總是利好。

這個我們先不管,讓我們來看看微軟的Expression系列產品,然後再看看對WPF的影響因素。

微軟與Adobe在UI領域的產品線比較

(1)圖形圖像設計類:Expression Designer。

插畫與圖形設計工具,可讓你設計賞心悅目的網頁及應用程序窗口介面,此工具也可用在WPF程序上,類似Adobe的illustrator設計軟件。

(2)網頁設計類:Expression Web。

網頁設計工具,與Adobe的Dreamweaver類似,雖不能直接開發WPF程序,但與VS2005或VS2008相結合,可開發出完美的WPF程序了。

(3)動畫設計類:Expression Blend。

專門用來建立互動式桌面應用程序及SilverLight網頁互動式工具。類似Adobe的Flash。

最後還是介紹一下,Expression Studio家族的新丁:Expression Media。

它是由之前的iView MediaPro演變而來。可以說其是一個“物件管理工具”,包括了一個用於跟蹤如圖片、字體、音/視頻等數字媒體的可視化目錄,能夠將矢量圖形、位圖、 3D內容、視頻、音頻和富文本合成到一起,三維視圖能夠自由地混合在其他2D和媒體元素之間,允許在一個設計作品的不同元素之間進行功能強大的可視化交 互;亦可添加3D圖形與動畫,並能對加入的3D對象進行直接控制,如XYZ坐標變換、3D照相機、表面材質、Z空間動畫以及表面紋理貼圖等;也可從主流第 三方3D創作工具中導入復雜的幾何圖形,還能夠制作高質量交互式視頻,包括 HD視頻。它還支持眾多第三方軟件,這些軟件可以用於Windows Media編碼、編輯、內容管理、數字版權管理等。

影響因素

WPF與Expression是不是能分得Adobe設計領域的這塊大蛋糕,還有許多因素:

(1)微軟推廣WPF和Expression系列產品的決心。

(2)WPF與Vista操作系統的普及密切相關。未來幾年Vista的市場占有率是WPF能否真正成功的關鍵。任何產品的市場普及都是需要時間的,就象 之前Windows系列產品的升級換代一樣。預計一兩年之後會有激戰加苦戰,同時,Flash與WPF將並存相當長的一段時間。畢竟,這是Adobe苦心 經營多年的市場。擁有大量忠實用戶,這一點從Photoshop圖書市場的火爆可見一斑。---www.bianceng.cn

(3)Expression工具是否好用。

(4)價格因素。

(5)在未來市場能否逐漸成為標准。畢竟Flash的SWF格式已在90%以上的浏覽器中安裝。

不得不承認,作為設計領域多年的霸主,Adobe的實力三年內暫時是無法撼動的。微軟對這方面的希望也是寄與未來的操作系統和開發工具,從目前的情況來 看,微軟推出的絕大多數設計類產品,都是針對程序開發相關人員的。不過,在微軟步步進逼的同時,Adobe一定會還以顏色。試想當有人把刀架到你脖子上, 讓你就范時,是人都會反擊,何況是設計巨無霸Adobe? Adobe推出的Flash(Flex、Apollo)平台正在向application領域穩步前進,並且和開源開發工具Eclipse愈走愈近,以便 能與微軟Visual Studio打擂台。因此,微軟還有相當長的路要走。但隨著微軟的大舉進攻,加之其擁有自己操作系統的優勢,多年之後,微軟與Adobe,誰將爭霸天下? 我們拭目以待。

對用戶來講,競爭是有益的。既然暴風雨一定要來,就讓它來得更猛烈些吧。不經歷風雨,怎麼見彩虹?

微軟加油,Adobe加油!

4.哪些人應該關注WPF

(1)Net Windows Forms開發人員。

在.net 1.0, 1.1或2.0中開發過Windows Forms應用程序的程序員們深有體會,如果需要制作漂亮的界面,我們不得不使用GDI+編寫大量自定義控件,裡面涉及紛繁復雜的圖形繪制,其中的大量的 繪制API可能曾讓你頭痛不已。恭喜你,當你使用WPF來完成這些任務時,一切變得輕輕松松。當然,如果你是GDI+方面的高手,你仍然可以定制你的控 件。

(2)使用Win32及MFC開發者。

Win32及MFC開發者也會遇到程序界面繪制的問題,有時為了滿足用戶“美的享受”,你是否曾經為諸多的類庫,復雜的繪制算法而費盡腦細胞?它們是不是讓你付出過高昂的時間和精力代價?在WPF裡,“一切盡在掌握中”。

(3)圖形圖像開發人員。

如果你是圖形圖像開發人員,那麼,請留意了!如果你還在為各種2D,3D的圖形圖像算法而潛心專研時,人家初學者使用WPF,可能輕輕一點,出來的效果已超過你多天冥思苦想的結果。

(4)網站程序開發人員。

知道XBAP嗎?知道SilverLight嗎?如果不知道,請多關注它們,否則,一年半載之後,你會發現,你落伍了!

(5)平面設計人員、Flash開發者。

眾所周知,Photoshop可以做出炫彩奪目的圖片效果,FLASH動感十足。而號稱Flash殺手的SilverLight (“銀光”,最終微軟將中文字定為什麼,不得而知。我倒認為中文名字應該叫“炫光”,我這裡還是緣用大多數人的說法吧)一登場, 就引起了無數設計者的目光。它是不是真的Flash Killer?銀光閃現,“閃客”們如何應對?

WPF帶來Vista酷炫的視覺感受的時候,作為設計愛好者的你,還坐得住嗎?

了解越多,理解越深,最終答案由你自己來回答吧。

5.結語

隨著WPF,Apollo(現名曰:“AIR”)等RIA技術的發展,XHTML + CSS + JavaScript,甚至AJAX這一代技術走下坡路的日子,已經為期不遠了。微軟、Adobe關於圖形圖像、網絡動畫等的競爭如箭在弦,新一代技術帶 給用戶的體驗是實實在在的。也許今年局面還不至於有巨大變化,但時間踏入2008年時,在WPF、Flash(AIR)等RIA技術的夾攻之下,桌面應用 程序與WEB應用程序的界限會越來越模糊,隨著時間的推移,越來越多的Web應用將同時部署傳統Web頁面和新的RIA UI。此消彼長,幾年之後RIA應用將成為主流。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved