Windows Presentation Foundation



Windows Presentation FoundationWPF)是美國微軟公司推出.NET Framework 3.0及以后版本的组成部分之一,它是一套基于XML、.NET Framework、向量绘图技术的展示層开发框架,微软视其为下一代使用者介面技术,广泛被用于Windows Vista的界面开发。


WPF使用一种新的XAML(eXtensible Application Markup Language)语言来开发界面,这将把界面开发以及后台逻辑很好的分开,降低了耦合度,使用户界面设计师与程序开发者能更好的合作,降低维护和更新的成本。


WPF/E是WPF的子集合,全名是:Windows Presentation Foundation Everywhere。在基於XAML與JavaScript之下,可跨越各種平台,目前WPF/E已演化為Microsoft Silverlight,擔負微軟在丰富互联网应用程序領域,並正面與Adobe Flash競爭的產品。




目录





  • 1 特徵

    • 1.1 繪圖服務


    • 1.2 佈署


    • 1.3 互操作性


    • 1.4 媒體播放


    • 1.5 資料鏈結


    • 1.6 使用者介面


    • 1.7 文件



  • 2 工具


  • 3 WPF/E


  • 4 WPF應用程式


  • 5 發行歷史


  • 6 参考資料


  • 7 外部链接




特徵


WPF部份之特徵如下:



繪圖服務


  • 所有的圖形皆可由Direct3D產生。
    • 目標在於統一各種顯示圖形。

    • Windows可以透過Direct3D來減輕在繪圖任務上的負荷,這項技術乃基於電腦顯示卡的繪圖處理單元(Graphics Processing Unit)。

    • 支援向量繪圖(vector graphic)。

    • 支援3D透視圖並且影響2D應用程式。


佈署


  • WPF不僅僅是建立傳統的獨立程式(standalone applications)。其部署方式可分成兩類:standalone與XAML Browser Applications(XBAP)觀點。這些佈署方式在程式的撰寫上大致類似。
    • 獨立程式之安裝方式可以借由ClickOnce或微軟安裝器(MSI)完成。獨立程式可被視為完全信任(full trust)具有完全存取系統資源的優點。


    • XAML Browser Application(XBAPs)是一種寄宿於網頁瀏覽器上的程式,像是Internet Explorer。寄宿的程式可取得部份信任(partial trust)的沙箱(sandbox)環境之下,且無法取得完整的系統資源,WPF的功能亦無法完全發揮。寄宿的環境必須有意地防衛惡意的程式碼。從網頁上執行XBAP(讀音"ex-bap")必須是毫無破綻的(沒有安全性或安裝提示)。雖然這樣的寄宿程式在感觀上與傳統微軟的DLL(out of process)有相異處。


互操作性


  • WPF可與Win32互相操作:經由主導(hosting)機制,可以在Win32碼之下使用Windows Presentation Foundation,或是在Windows Presentation Foundation環境下使用Win32程式碼[1]


  • Windows Forms的互操作性亦可利用ElementHost(繼承自System.Windows.Forms.ContainerControl)以及WindowsFormsHost(繼承自System.Windows.Forms.Integration)等類別達成,同時提供了Host Avalon Element的能力。


媒體播放


  • WPF針對2D圖形提供形狀基元(shape primitives),內建筆刷(brushes)、畫筆(pens)、幾何(geometries),與變形(transforms)。

  • WPF以Direct3D提供完整的3D功能。但是,WPF提供更完整的整合性在於使用者介面上(UI)、文件(documents),與媒體(media)。這使得儘可以實現3D UI, 3D文件,和3D媒體。

  • 支援了大量的圖片格式(image formats)。

  • WPF支援大量影音格式,如:WMV,MPEG以及某些AVI檔。

  • WPF支援以時間為基礎的動畫效果,不同於以影格為基礎的處理方式。如此動畫的速度與系統效能就不會有所關連。

  • 文件的呈現支援ClearType,這提供一種次像素(sub-pixel)定位功能,強化其自然風格。WPF同時支援OpenType字型樣式。


資料鏈結


  • WPF有內建資料服務結合,可以讓應用程式發展者在應用程式內鏈結並處理資料。一共有三種資料鏈接方式:
    • one time:客戶端(client)必須忽略伺服端(server)的更新動作。

    • one way:客戶端僅被准許讀取資料(read-only)。

    • two way:客戶端可讀取並讀進伺服端。


  • 資料連結在展示層並無太大負擔。WPF提供有資料樣板(data templates)來控制這些資料。


使用者介面


  • WPF提供了內建元件控制項集合,包括有按鈕(button)、選單(menu)、列表盒(list box)等。

  • WPF的邏輯層與外觀展示層已形成強力的分離模式。
    • 元件的外貌樣品可以被完全改寫。


文件


對OpenType的支援包括:



  • 合字(Ligatures)

  • 舊式數碼(Old-style numerals,for example, parts of the glyph hang below the text baseline)


  • 花体字(Swash)

  • 分數形式(Fractions)


  • 上标及下标

  • 小型大写字母


工具


在以往Win32應用程式發展時,絕大多數的工作都由開發人員(Developer)來處理,美術設計人員(Designer)可以涉入的相當有限,而且在Win32 API時代,要在使用者介面中實作特效的話,都需要撰寫大量的程式碼才可以做到。


在WPF中,因為大多數的使用者介面元素都可以利用XAML來宣告,因此微軟試著要將Designer和Developer結合在一起,如此可以讓Designer可以充份發揮,並且Developer也不用傷腦筋在外觀設計上,微軟的Designer工具為Microsoft Expression產品集,其中的Expression Blend即為設計WPF應用程式的設計工具,它也可以用來設計Silverlight程式。


開發人員仍然可以使用Visual Studio來開發WPF應用程式,在Visual Studio中內含WPF Designer可供開發人員使用。



WPF/E



WPF/E發展初期為微軟計畫將WPF推向各平台的計畫,目前此計畫已經被發展成為Silverlight技術。



WPF應用程式


WPF是下一代圖形API在桌面上的延伸。以WPF撰寫應用程式,具有更高的視覺品質。下表列出微軟自家的產品或是第三協力廠商的主力產品:



  • Microsoft Visual Studio 2010

  • Microsoft Expression Design

  • Microsoft Expression Blend

  • Yahoo! Messenger

  • New York Times Reader

  • Blu


  • 腾讯QQ概念版(只能在Windows 7上使用)[2]


發行歷史











































系列
版本
發佈日期
重要變更/事項
一同發佈的產品
3
3.0
2006年11月
-
-
3.5
2007年11月
-
-
3.5 SP1
2008年8月
-
-
4
4.0
2010年4月
-
-
4.5
2012年8月
-
-
4.5.1
2013年10月
-
-
4.52
2014年5月
-
-
4.6
2015年7月

高解析度 (High Dots Per Inch; HDPI) 改善;觸控行為焦點 (Touch) 改善;程式子視窗透明 (Transparent child window) 支援
Visual Studio 2015




参考資料




  1. ^ WPF and Win32 Interoperation Overview


  2. ^ QQ实验室



外部链接



  • - .Net Framework 3.0官方社区(英文)


  • The Windows Presentation Foundation community portal—The WPF section of the .NET Framework 3.0 community site.


  • MSDN Windows Presentation Foundation SDK—Software Development Kit for WPF.


  • WPFwiki.org—The largest WPF FAQ question and answer repository & Wiki.


  • Getting Started (WPF)—Roadmap to information for developers new to WPF.


  • WPF SDK Blog—Active blog maintained by the WPF SDK team.


  • Windows Presentation Foundation Unleashed—The first WPF book to market, written by the lead developers Adam Nathan。


  • Essential Windows Presentation Foundation—An online WPF tutorial and reference, written by Chris Anderson。


  • Microsoft Expression Blend—Visual tool for creating Windows Presentation Foundation applications.


  • wpf made simple—Provides info/samples on WPF.


  • XAML.net Information on XAML and XBAPs, the Windows Presentation Foundation (WPF), .NET Framework 3.0 and Windows Vista]]。


  • A Guided Tour of Windows Presentation Foundation—Microsoft's overview of Windows Presentation Foundation.


  • Windows Presentation Foundation Security Sandbox—An overview of the sandbox in which WPF browser applications run.


  • MSDN Forums for Windows Presentation Foundation—Active discussion forum for WPF developers.


  • WPF/E Google Group—Discussion group and list of examples.


  • Microsoft goes cross-platform with WPF/E—WPF/E explained in an interview with Microsoft's Director of Developer Tools.


  • More than meets the eye in Microsoft's plans—News.com's article on WPF/E

  • WPF page on NetFXGuide.com


  • A Five Mile Overview of WPF—A high-level overview of WPF for software developers.


  • xbap.org—Comprehensive information on XBAP applications.


  • DirectX 10 Wiki - Wiki covering WPF and DirectX 10 Tutorials, Samples, Effect, News.


  • 我用43吋螢幕 各種排版錯誤 - 在高解析度下,WPF的排版會錯誤


Popular posts from this blog

【情報】本週珍珠商品重點:煉金時裝 + 艾港勞工宿舍!!

京昆高速公路

【攻略】陳戈-謝勒汗智慧的古書 (完成)