[简译]WPF概述

回顾过去

早期基于Windows用户接口的主要技术是GDIUSER子系统,它们早在1985年就由Windows 1.0引入了。这些技术现在已经过时了。在1990年,SGI创建了流行的图形库OpenGL,它可以用于高级2D3D图形的开发。人们使用它创建CAD和虚拟科学等程序。在1995年,微软的DirectX是一个新的高效技术,同样可以用于2D图形等的开发。在这些年,许多增强的应用程序是由GDIDirectX构建的。

WinXP时代,构建于GDI之上且添加了更多支持(如Alpha混合)的GDI+被引入。同时,DirectX也在一代代地更新。2002年,.NET和托管代码被引入,开发者可以使用更加方便的编程模型来开发基于WindowsWeb的应用程序。在这个时代,构建于GDI+之上的Windows Form成为开发者构建基于Windows用户界面的主要技术。尽管如此,Window Form仍旧受限于GDI+USER子系统。

DirectX9刚开始的时候,微软为了适应托管代码而对DirectX框架进行的调整,并且最终形成XNA框架。尽管开发者使用C#开发DirectX应用可以避免许多复杂的COM互操作,但是除了编写游戏之外,托管代码并没有什么显著的简化。

基于GDI技术的用户体验被认为“足够好”,因为提供非GDI技术的硬件并不普遍。近些年,尽管硬件不断更新,消费者的期望不断增长,但是开发人员的经验并没有显著提高。在最近几年,开发者开始开发个性化的应用程序和控件(如使用位图按钮代替一般按钮)。这些个性的东西不仅开发花销大,而且通常还会产生不好的用户体验,比如不能运行在某些特定的环境中,或不能在远程桌面上显示等。

 

进入WPF

微软认识到很需要某些崭新的、既能脱离GDIUSER子系统限制,又能提供像Windows Forms那样令人们喜爱且具有高生产率的东西。WPF应运而生。下面列举的是WPF包含的一些特性:

 

广泛的集成性

WPF之前,想要在应用程序中使用3D、视频、语音等特性的Windows开发者,需要学习许多单独的技术,并且还要在没有任何内建支持的情况下把它们混合在一起。与此不同,WPF则覆盖了所有这些领域,并且提供了一致的编程模型使得许多媒体可以组合在一起并且显示出来。相同类型的特效可以一致地跨域不同媒体,并且我们学习一个领域的技术就可以应用在其他所有领域。

 

分辨率无关

WPF增强了矢量绘图,这使得开发者可以在屏幕上以分辨率无关的方式收缩或者放大界面元素。

 

硬件加速

WPF构建于Direct3D之上,无论是2D3D、图形还是文本,都被转换到3D三角形、纹理和其他3D对象上,继而由硬件渲染。这意味着,与基于GDI的系统不同,WPF应用程序获得了硬件加速的好处。(硬件加速可以获得更好的性能是因为渲染工作由GPU分担了)。除了高端游戏程序,WPF应用程序可以从最新的硬件和驱动中获得最大的好处(增强3D能力)。即便是这样,WPF并不需要高端的图形设备,因为它拥有一个软件渲染流水线。它允许使用还没有被硬件支持的特性,允许将任何屏幕内容高保真打印,并且在遇到硬件资源不足等问题的时候被当作一种反馈机制使用。

 

说明式编程

20多年来,Win16/Win32程序一直使用说明性脚本来定义对话框和菜单的布局。在WinForm当中仍旧没有对说明式用户界面的内建至支持。但在WPF中,XAML用于定义用户界面。WPFXAML的组合就像使用HTML来定义用户界面,但是XAML的表达能力更加丰富,这种表达能力甚至可以被扩展到超出用户界面范围。WPFXAML作为一种文档格式、3D模型的描述方法甚至更多。这将使得图形设计者可以直接制作应用程序的外观以及一些从前不得不用代码才能实现的行为。

 

丰富的组合力和个性化

WPF控件可以一种前所未见的方式进行组合。我们可以创建一个充满动画按钮的组合框,或者一个充满视频剪辑的菜单。尽管这些特殊的个性化操作听起来很恐怖,但最重要的是我们不必写大量的代码(甚至不写任何代码)就可以一种控件作者难以想象的方式来自定义控件(与之前的自绘技术不同)。WPF还可以快速、简单地为应用程序换肤。

 

部署简单

WPF提供了一般Windows应用程序的部署方式,如使用Windows InstallerClickOnce或者Web浏览器寄宿。这些对于WPF来说并不是新技术,但是构建在ClickOnce之上、用于支持与浏览器及其导航系统集成的方式还是既新颖又有趣的。

 

综上,WPF的目标是集DirectX3D和硬件加速)、Windows Forms(开发者产能)、Abobe Flash(强大的动画支持)和HTML(说明性标记和简单部署)等系统的优秀特性于一身。

 

WPFFlash的选择

相比FlashWPF的优势包括:开发工具、编程模型、丰富的特性集、健壮的可重用控件、广泛的编程语言支持和在安全性允许的情况下访问底层平台;劣势包括:需要Windows.NET框架3.0

 

WPF.NET框架的关系

       WPFWCFWFWCS并列位于.NET框架的最外圈,它们的下面是.NET框架2.0版本所包含的内容,这些内容并没有因为引入WPF而发生变化。它基于托管代码设计,并且增强了说明性描述和过程代码的混合。其内核部分有非托管代码实现,并提供一些低级非托管API以供使用。

 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值