一、 WPF介紹

        從來沒想好好閱讀一本關於編程方面的書,我個人喜歡買書,但是買書僅僅侷限於某個項目會用到某本書中的某項技術!在一個項目結束之後,書籍也就束之高閣,再也失去了他的價值!最近想靜下心來編寫一個貌似有點技術含量的軟件,全部工作均打算在空餘時間完成,爲了某個諾言,也爲了考驗自己到底還剩下多少耐心來靜靜地看完一本書!

      打算整個系列的WPF一一細讀,並加入自己學習過程中的某些體會,裏面可能有些自己認識上的誤區,也希望高手看到的時候不吝賜教,也希望可以幫助跟我一樣想學習WPF的朋友們,共同交流提高!

      希望循序漸進又不失速度地完成整個系列!

       那麼---現在開始第一章(WPF介紹)!

 
        WPF, Windows Presentation  Foundation,中文又稱Windows演示基礎,是一個用於Windows的圖形顯示系統!WPF是針對.Net而設計的,受現代顯示技術(如HTML和FLASH)以及硬件加速技術的影響!

       以前,標準Windows應用程序主要依靠以下兩種技術來創建用戶界面:

          1.  User32---爲許多元素(如按鈕,窗口,文本框等)提供了熟悉的Windows外觀

          2. GDI/GDI+---爲渲染簡單形狀,文本以及圖像提供了繪圖支持,但是增加了複雜程度,但是整體性能較差

             比如說,我們都熟悉的MFC,就是使用以上兩種內容,做了一個封裝器,雖然減少了程序員編寫代碼的部分工作,但是整體上而言,整個MFC仍然受制於界面比較單一,所使用的資源工具有限,如果要編寫一個比較炫目多彩的軟件界面,我們往往需要在MFC基礎上做大量的工作才能得到我們或者客戶想要的效果!

           爲了解決User32和GDI/GDI+的效率問題,微軟提供了一個解決方案:DirectX; DirectX最初主要是針對Windows平臺上游戲而設計,重點關注速度,並與顯卡供應商合作,以便爲DirectX提供複雜的紋理映射,特殊效果(如半透明),以及三維圖形所需要的硬件加速!

           在WPF中,底層的圖形技術不再是GDI/GDI+,而是使用DirectX。需要強調的是,不管創建那種用戶界面,WPF應用程序在底層都是使用DirectX;當然WPF也會根據自身系統以及顯卡的配置來決定使用的級別,這些也是顯而易見的!

        WPF除了使用DirectX作硬件加速意外,還提供了很多高級服務:

  • 類似Web的佈局模型:採用靈活的流式佈局,而不再使用座標來做定位,可以靈活排列控件,從而適應多變的內容以及多語言的需要!
  • 豐富的繪圖模型:
  • 豐富的文本模型:
  • 作爲首要編程概念的動畫;
  • 支持音頻和視頻媒體:WPF支持所有WIndows媒體播放器支持的多媒體文件
  • 樣式和模板:對於現代具有皮膚軟件具有重要意義
  • 命令:可以將同一個命令映射到多個控件
  • 聲明式用戶界面:通過編寫修改XAML文件來修改創建界面
  • 基於頁面的應用程序:創建如瀏覽器一樣的軟件


      與一般的Window應用程序相比較,WPF應用程序具有分辨率無關性,這樣也就保證了WPF應用程序在換到不用分辨的顯示器上顯示的時候,可以保證與設計時的尺寸一直!這樣就不會因爲分辨率的問題導致用戶界面發生控件大小的改變,飄移,或者消失的情況!

          ***WPF體系結構:

       WPF使用一個多層的體系結構。在頂層,應用程序和一個完全由託管的C#代碼編寫的一組高層服務進行交互!至於將.Netd對象轉換爲Direct3D紋理和三角形的實際工作,是在後臺由一個叫做milcore.dll的低級的非託管組件完成的!milcore.dll是使用非託管代碼實現的,因爲他需要和Direct3D緊密集成,並對他對性能非常敏感!

      下圖顯示了WPF應用程序中各層的工作情況:

                       

  • PresentationFramework.dll  包含了WPF頂層的類型,包括那些表示窗口,面板以及其他類型控件的類型。開發人員直接使用的大部分類都來自這個程序集!
  • PresentationCore.dll  包含了基礎類型,比如UIElement類和Visual類,所有形狀類和控件類均繼承自這兩個類!
  • WindowsBase.dll  包含了更多的基本要素,這些要素具有在WPF外重用的潛能!
  • milcore.dll  是WPF渲染系統的核心,也是媒體集成層的基礎!其合成引擎將可視化元素轉化爲Direct3D所期望的三角形和紋理!
  • WindowsCodecs.dll 是一套提供圖像支持的低級API(例如,處理,顯示以及縮放位圖以及JPEG圖像)
  • Direct3D是一套低級的API,WPF應用程序中所有的圖形都由它來渲染!
  • Use32用於決定哪些程序實際佔有桌面的哪一部分!它仍然被包含在WPF中,但是已經不再使用它來渲染通用控件!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章