簡譯 WPF概述

2021-04-15 09:46:49 字數 3519 閱讀 3025

回顧過去

早期基於

windows

使用者介面的主要技術是

gdi和

user

子系統,它們早在

1985

年就由windows 1.0

引入了。這些技術現在已經過時了。在

1990

年,sgi

建立了流行的圖形庫

opengl

,它可以用於高階2d和

3d圖形的開發。人們使用它建立

cad和虛擬科學等程式。在

1995

年,微軟的

directx

是乙個新的高效技術,同樣可以用於

2d圖形等的開發。在這些年,許多增強的應用程式是由

gdi和

directx

構建的。

winxp

時代,構建於

gdi之上且新增了更多支援(如

alpha

混合)的

gdi+

被引入。同時,

directx

也在一代代地更新。

2002

年,.net

和託管**被引入,開發者可以使用更加方便的程式設計模型來開發基於

windows

和web

的應用程式。在這個時代,構建於

gdi+

之上的windows form

成為開發者構建基於

windows

使用者介面的主要技術。儘管如此,

window form

仍舊受限於

gdi+

和user

子系統。

在directx9

剛開始的時候,微軟為了適應託管**而對

directx

框架進行的調整,並且最終形成

xna框架。儘管開發者使用

c#開發

directx

應用可以避免許多複雜的

com互操作,但是除了編寫遊戲之外,託管**並沒有什麼顯著的簡化。

基於gdi

技術的使用者體驗被認為「足夠好」,因為提供非

gdi技術的硬體並不普遍。近些年,儘管硬體不斷更新,消費者的期望不斷增長,但是開發人員的經驗並沒有顯著提高。在最近幾年,開發者開始開發個性化的應用程式和控制項(如使用位圖按鈕代替一般按鈕)。這些個性的東西不僅開發花銷大,而且通常還會產生不好的使用者體驗,比如不能執行在某些特定的環境中,或不能在遠端桌面上顯示等。

進入

wpf

微軟認識到很需要某些嶄新的、既能脫離

gdi和

user

子系統限制,又能提供像

windows forms

那樣令人們喜愛且具有高生產率的東西。

wpf應運而生。下面列舉的是

wpf包含的一些特性:

廣泛的整合性

在wpf

之前,想要在應用程式中使用

3dwindows

開發者,需要學習許多單獨的技術,並且還要在沒有任何內建支援的情況下把它們混合在一起。與此不同,

wpf則覆蓋了所有這些領域,並且提供了一致的程式設計模型使得許多**可以組合在一起並且顯示出來。相同型別的特效可以一致地跨域不同**,並且我們學習乙個領域的技術就可以應用在其他所有領域。

解析度無關

wpf增強了向量繪圖,這使得開發者可以在螢幕上以解析度無關的方式收縮或者放大介面元素。

硬體加速

wpf構建於

direct3d

之上,無論是2d、

3d、圖形還是文字,都被轉換到

3d三角形、紋理和其他

3d物件上,繼而由硬體渲染。這意味著,與基於

gdi的系統不同,

wpf應用程式獲得了硬體加速的好處。(硬體加速可以獲得更好的效能是因為渲染工作由

gpu分擔了)。除了高階遊戲程式,

wpf應用程式可以從最新的硬體和驅動中獲得最大的好處(增強

3d能力)。即便是這樣,

wpf並不需要高階的圖形裝置,因為它擁有乙個軟體渲染流水線。它允許使用還沒有被硬體支援的特性,允許將任何螢幕內容高保真列印,並且在遇到硬體資源不足等問題的時候被當作一種反饋機制使用。

說明式程式設計

20多年來,

win16/win32

程式一直使用說明性指令碼來定義對話方塊和選單的布局。在

winform

當中仍舊沒有對說明式使用者介面的內建至支援。但在

wpf中,

xaml

用於定義使用者介面。

wpf和

xaml

的組合就像使用

html

來定義使用者介面,但是

xaml

的表達能力更加豐富,這種表達能力甚至可以被擴充套件到超出使用者介面範圍。

wpf以

xaml

作為一種文件格式、

3d模型的描述方法甚至更多。這將使得圖形設計者可以直接製作應用程式的外觀以及一些從前不得不用**才能實現的行為。

豐富的組合力和個性化

wpfwpf

還可以快速、簡單地為應用程式換膚。

部署簡單

wpf提供了一般

windows

應用程式的部署方式,如使用

windows installer

、clickonce

或者web

瀏覽器寄宿。這些對於

wpf來說並不是新技術,但是構建在

clickonce

之上、用於支援與瀏覽器及其導航系統整合的方式還是既新穎又有趣的。

綜上,wpf的目標是集

directx(3d

和硬體加速)、

windows forms

(開發者產能)、

abobe flash

(強大的動畫支援)和

html

(說明性標記和簡單部署)等系統的優秀特性於一身。

wpf

flash

的選擇

相比flash

,wpf

的優勢包括:開發工具、程式設計模型、豐富的特性集、健壯的可重用控制項、廣泛的程式語言支援和在安全性允許的情況下訪問底層平台;劣勢包括:需要

windows

和.net

框架3.0。

wpf

.net

框架的關係

wpf和wcf、wf

、wcs

並列位於

.net

框架的最外圈,它們的下面是

.net

框架2.0

版本所包含的內容,這些內容並沒有因為引入

wpf而發生變化。它基於託管**設計,並且增強了說明性描述和過程**的混合。其核心部分有非託管**實現,並提供一些低階非託管

api以供使用。

筆記 簡譯 WPF的新特性 路由事件(1)

路由事件 routed event 就像 wpf在 net 屬性之上新增了許多基礎結構一樣,它也在 net 事件之上新增了許多基礎結構。路由事件是一種與樹上元素協同工作的事件,當它被觸發後,能夠沿著邏輯樹和視覺樹上 下傳遞,觸發每個子元素的對應事件,不需要任何自定義的 事件路由幫助大多數應用程式遮蔽...

譯 ClickOnce部署概述

clickonce是一項部署技術,它能夠讓你建立基於windows作業系統並能自動更新的應用程式,同時在安裝過程中,可以將使用者需要進行的互動降到最低。clickonce部署克服了在部署過程中存在的以下三個主要問題 對使用者計算機的影響。使用microsoft windows installer進行...

譯 ClickOnce部署概述

clickonce是一項部署技術,它能夠讓你建立基於windows作業系統並能自動更新的應用程式,同時在安裝過程中,可以將使用者需要進行的互動降到最低。clickonce部署克服了在部署過程中存在的以下三個主要問題 對使用者計算機的影響。使用microsoft windows installer進行...