Essential Silverlight翻譯連載---第一章 WPF基礎

第一章      基礎WPF
當今很多的圖形都是基於像素的。圖像中的每個點都由一個像素描繪。在很多場合,這是一個非常好的解決方案,包括數碼攝影技術(當您希望維持像機中的每個單元信息都可見),但這也有一些缺點。比如,如圖1-1所示,當您在微軟的畫圖軟件中觀察簡單的文字。這些文字是基於像素的,在圖1-2中,你看見相同的文字,但這幅圖像的高和寬被放大了。你是否看到鋸齒?所以,一張基於像素的圖像被放大時將圖像質量的下降。
 
這顯而易見,例如,當把一個100×100像素的圖像放大爲200×200像素。如何從10000像素變爲40000像素呢?在原始圖像中的1×1像素現在變爲了2×2像素。繪圖軟件使用了一個十分簡單的算法去改變圖像的尺寸:如果圖像尺寸變大,僅僅克隆像素。這就形成了鋸齒。
提示:專業的繪圖軟件如Adobe的Photoshop使用了幾個複雜的算法來保證當圖像尺寸改變時的質量損失(特別當縮小圖像時);然而,當圖像放大時,對圖像的影響還是很明顯的。
解決這些問題的辦法之一是:矢量圖。圖像中的每一個元素都是幾何對象:一條直線,一個多邊形,一條曲線,這裏只例舉了少數名稱。它最大的優勢在於當改變圖像尺寸時不會導致質量損失:一個圓只需改變它的半徑,僅此而已。它不會出現鋸齒,因爲它還是一個圓,而不是一個基於像素的圖像,一系列在圓形中排列的像素。
顯然,並非所有的圖像都可以用矢量描繪。我們再想想,理論上可以在肖像或風景中儘量找到幾何元素或圖案(這需要算法),但事實上不可能使用矢量去精確地描繪一幅圖像。無論如何,矢量圖像在計算機中的幾個方面可以表現得更爲真實。第一個方面是字體。如圖1-3所示的Windows字體(符合圖1-1和1-2中的字體)。大部分字體是矢量的,所以不管您使用8pt,10pt,12pt,還是100pt,它們的質量沒有什麼不同。如果在word中敲入字符並使字體變大,它的邊緣仍然平滑。一旦您將文字粘貼到基於像素的圖像處理軟件(如畫圖)後,文字將失去矢量信息而變爲像素。
 
另外一個傾向於使用矢量的地方是用戶界面(UI)。標準的UI大多數時候是兼容矢量的。它們很多時候需要被改變大小,所以在用戶改變窗體大小時,它的內容仍然被完整無缺地保留。儘管如此,實際上,很少有UI是基於矢量的。
WPF
不久以前,Microsoft公司爲它們的Vista操作系統(當然,跟之前的名稱不同)設計一新的UI生成技術。這套系統基於矢量並使用XML技術。它最終命名爲Windows Presentation Fundation(WPF)。
矢量圖形和XML
有幾個項目也在試圖使用矢量(可能是一些動畫或商業邏輯支持)來創建圖形。時間最長的一個是World Wide Web Consortium’s(W3C)的Scalable Vector Graphics(SVG)。SVG圖形是使用XML創建的,支持腳本,並支持除了Internet Explorer之外的大多數先進的瀏覽器。然而,SVG在市場上並非主流,它只在有限的地方獲得了成功,包括移動電話和繪圖。
另外一個項目來自於Adobe公司,Flex使用了另外一種XML語言(叫MXML)來動態生成Flash。
WPF是.NET Framework 3.0的一個主要組成部分,它在Vista操作系統中被默認安裝,並可以在Windows XP和Windows 2003中作爲插件下載。.NET3.0中的另外幾個主要組成部分包括:
WCF(Windows Communication Foundation
通訊子系統
WCS(Windows CardSpace
數字身份子系統(譯者注:原文是Digital identity subsystem,翻譯可能不正確
WF(Windows Workflow Foundation
工作流子系統
WPF應用程序即可以運行在瀏覽器上也可以做爲桌面應用程序單獨運行。.NET Framework 3.0或更高版本應該都需要它。現在大多數的WPF應用程序被單獨運行,因爲Vista還沒有達到很高的的市場佔有率,另外下載.NET3.0需要花費太多時間。因此微軟公司專門爲瀏覽器創建了相似的技術:Silverlight。我們首先看看更多的關於WPF背景信息。
WPF的焦點主要在矢量圖上,但同樣對基於像素的圖形有很好的支持。WPF對於聲音和視頻數據也有很好的支持。它的一個亮點是對文字的支持,包括文字的排版比如文字對齊,字間距的調整和字母組合。
你不必驚奇,所有的商業邏輯代碼都使用.NET語言如C#和Visual Basic來完成。.NET Framework非常嚴謹,CLR(公共語言運行時)---定義了WPF應用程序中的每種可能的元素並且使用Visual Studio將會有一個很好的編程體驗(想想代碼提示)和快速原型。同樣,訪問XAML所需要API提供了比XAML本身更多的功能,所以爲了發揮出XAML/Silverlight的功效,你需要同時熟悉標語語言和編程語言。
現在已經有幾個使用WPF原型的項目,包括幾個使用文字流顯示的電子報紙,比如Forbes.com讀物(如圖1-4所示,可以在http://www.forbes.com/partners/microsoft/newsreader/下載)。另外一個是Yahoo!messenger也將使用WPF界面技術。
 
XAML
是否如前面我們所討論的那樣,WPF是由XML來創建的呢?的確如此,爲了達到這個目的使用了特殊格式的XML:XAML(eXtensible Application Markup Language)。它用於WPF應用程序中的UI標記。WPF運行時負責解釋這些標記並顯示標記,同時整合附加的商業邏輯代碼(使用.NET語言如C#VB完成的代碼)。
微軟提供了幾個用於XAML開發的工具。您可以使用Visual Studio,但如果希望有更好的視覺體驗,可以考慮使用Expression BlendMicrosoft Expression Suite產品的一部份)。.NET Framework 3.0 SDK還包括一個應用程序叫SAMLPad,可以用於分欄顯示:即可以看到標記語言,也可以在顯示代碼的同時顯示其效果,從而達到所見即所得的效果,如圖1-5所示。
當創建Silverlight應用時,無需擔心是否已經安裝了WPF,因爲開發和瀏覽Silverlight時無需安裝.NET Framework 3.0。儘管如此,您還是需要了解一些XAML方面的知識,因爲Silverlight是XMAL的一個子集。因此,第4章將介紹一些最重要支持Silverlight的XAML元素
進階讀物
Programming WPF (http://www.oreilly.com/catalog/9780596510374/index.html) by
Chris Sells and Ian Griffith (O’Reilly)
 
發佈了18 篇原創文章 · 獲贊 0 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章