一、名詞解釋 WPF(Windows Presentation Foundation),直譯為Windows表示基礎,是專門用來編寫程式表示層的技術和工具。 大部分程式都是多層架構的,一般至少包含三層: 數據層:用於存儲數據,多由資料庫構成。 業務邏輯層:用於編寫現實的業務邏輯。 表示層:負責把數據 ...
一、名詞解釋
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》。