WPF概述(硬件加速及分辨率無關性)


一、名詞解釋

 

WPF(Windows Presentation Foundation),直譯為Windows表示基礎,是專門用來編寫程序表示層的技術和工具。

 

大部分程序都是多層架構的,一般至少包含三層:

數據層:用於存儲數據,多由數據庫構成。

業務邏輯層:用於編寫現實的業務邏輯。

表示層:負責把數據和流程以界面顯示的形式展示給用戶看。

相比其他技術,WPF引入了“內置硬件加速”和“分辨率無關”等創新功能。

 

二、硬件加速

 

WPF通過DirectX執行所有WPF繪圖操作,以便充分利用現代顯卡的最新功能。

 

在WPF問世之前,傳統的Windows應用程序都依靠如下兩部分來創建用戶界面:

User32:該部分為許多元素(如窗口、按鈕和文本框等)提供了熟悉的Windows外觀

GDI/GDI+:該部分為渲染簡單形狀、文本以及圖像提供了繪圖支持,但增加了復雜程度(而且通常性能較差)。

 

后針對User32和GDI/GDI+的限制發行了 DirectX 技術,起初用於開發游戲,注重速度,由顯卡支持,可以實現復雜的紋理映射、特殊效果(如半透明)以及三位圖形所需的硬件加速功能。

WPF應用程序在底層都是使用DirectX,因此具有兩大優勢:①可使用豐富的效果②顯卡硬件加速

 

三、分辨率無關性

 

傳統Windows應用程序的用戶界面,是不可伸縮的。如果使用更高的顯示器分辨率,將會更緊湊地排列像素,應用程序窗口將變得更小並更難以閱讀。即圖像包含的像素數不變(精細程度不變),但圖像大小會變。

而在WPF中,高分辨率顯示器可顯示相同大小的工具欄圖標,但使用更多像素顯示更清晰的圖形,WPF會確保任何顯示內容都能自動地具有正確的尺寸。即圖像大小不變,圖像包含的像素數會變(精細程度會變)。例如,如果在計算機顯示器上創建一個1英寸寬的按鈕,在更高分辨率的顯示器上它仍能保持1英寸的寬度——WPF只是使用更多像素更詳細地渲染這個按鈕罷了。

 

下面介紹兩種單位:

dpi(dot per inch,每英寸像素點數)。例如,一個最大分辨率為1600×1200像素的19英寸顯示器,可用勾股定理算出其像素密度:

[屏幕DPI] = √16002+12002像素 / 19英寸 =100 dpi

WPF使用與設備無關的單位進行度量,一個與設備無關的單位被定義為1/96英寸,每個設備無關單位對應一個物理像素,轉換關系如下:

[物理單位尺寸] = [設備無關單位尺寸]×[系統DPI] = 1/96英寸×100dpi = 1.04像素

 

下面介紹兩種圖:

位圖,也稱為點陣圖像,使用我們稱為像素的一格一格的小點來描述圖像,因此縮放或旋轉位圖時會出現馬賽克模糊或邊緣鋸齒狀的現象。占用空間大。常見格式:*.bmp、*.pcx、*.gif、*.jpg、*.tif、*.png、photoshop的*.psd等。

矢量圖,被定義為一系列的形狀(點、線、面等構成),能夠很容易地縮放為任何尺寸,而清晰度不變。占用空間小。常見格式:AdobeIllustrator的*.AI、*.EPS、*.SVG,AutoCAD的*.dwg、*.dxf,Corel DRAW的*.cdr等。

WPF中,最好使用矢量圖。

 

 

 

本博文性質為讀書筆記,並非純原創,所參考和引用的書籍如下,特此注明。如轉載,也請注明出處。

《WPF編程寶典——使用C# 2012和.NET 4.5(第四版)》,英文書名為《Pro WPF in C# 2012: Windows Presentation Foundation in .NET 4.5》。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM