WPF特点
前言:为什么要学习wpf呢?因为随着现阶段硬件技术的升级以及客户对体验的要求越来越高,传统的gdi和users(或者是gdi+、users)已经不能满足这个需求,因此,wpf技术应运而生。
wpf的特点:
1、广泛整合: 在wpf出现之前,windows开发人员若需要在普通的2d图形和控件之外再使用3d、视频、语音、富文档视图技术,就不得不学习一些独立技术,这些技术之间通常存在许多不一致,而且是在没有多少内建支持的情况下组合运用它们。而wpf通过统一的编程模型和紧密整合涵盖了所有这些部分,在紧密整合下,各种媒体类型都能组合起来并一起呈现。你可以在不同媒体类型上应用一致的效果,你所学的某个领域中的许多技术可以应用在任何其他领域。
2、与分辨率无关: 基于矢量的图形界面,分辨率越高,图形显示越清晰,而不会像普通的图形那样产生锯齿状。
3、硬件加速: 虽然wpf是项新技术,但是它是基于direct3d创建的。特别要注意的是,在wpf应用程序中无论是2d还是3d的图形或者文字内容都会被转换为3d三角形、材质和其他direct3d对象,并由硬件负责渲染。这意味着wpf应用程序与基于gdi的系统不同,它们可以从硬件加速中获得好处,从而获得更平滑的图像和更好的性能。wpf并不必需高端图形硬件,它也有自己的软件渲染管道。因此它不但可以使用硬件尚不支持的特性,可以高保真地打印屏幕上的任何内容,而且当遇到硬件资源不足(例如只有一块较老的图形卡,甚至是有一块高端图形卡但却没有足够的gpu资源,如缺少显存)时还可以作为备用。
4、声明式编程: wpf通过引入xaml(可扩展应用程序标记语言,extensible applicationmarkup language,读音为zammel)将声明式编程带入下一个层次。wpf和xaml的组合十分类似于使用html定义一个用户界面,但却具有令人吃惊的表示能力。这种表示能力甚至超越了用户界面的范畴,wpf可以将xaml作为一种文档格式、一种3d模型表示,等等。
5、富创作和定制(rich composition and customization): wpf控件具有你从没见过的创作能力。你可以将一些动画按钮放入一个combobox控件中,或者将一些视频剪辑放入一个菜单中!虽然这些特别的定制可能听起来十分恐怖,但是你不需要写多少代码(甚至不要任何代码),就能以用控件开发者们从来没有想到过的方式自定义控件(并不像以前控件技术中的自绘(owner-draw))。用同样的方法,wpf使创建完全不同外观的“皮肤”应用程序变得十分简单。
6、易于部署: wpf为(使用windows installer或clickonce)部署传统windows应用程序或在web浏览器中宿主应用程序提供了选择。wpf的一个新且有趣的方面是它构建在clickonce之上,为与web浏览器及其导航系统的直接整合提供了支持。
wpf虽然有上述那么多闪光点,但是性能问题以及特性集不完整,也是其比较重要的不足,虽然随着技术的发展,特性集一直在完善,但是性能问题却是一个不可忽略的问题,但是由于现阶段硬件技术的飞速发展,相信不久的将来,这个也不再是问题。
wpf是跟随.net framework一起与用户见面的,是在原来的框架基础上面,新增加的组件,同时增加的组件还有wcf,wf和wcs。它主要有两个主题:针对托管代码重新设计以及强调过程式代码和声明式描述相结合。虽然wpf是针对托管代码而言的,但是,wpf确实有一些核心东西是由非托管代码实现的,甚至还提供了一些低层的非托管api来帮助你写自己的图形codec(编码解码器)或者位图特效。在.net framework的所有新增组件中,常用xaml和xml以透明的和声明式方式向外公开特性。在wpf中,xaml一般是用来表示用户界面的。在windows workflow foundation(wf)中,程序也可以使用xaml来表示与工作流相关的活动。在windows communication foundation(wcf)中,程序会使用xml配置文件把架构协议与应用程序协议分离开来,还可以使用xml消息和协定[简单对象访问协议(simpleobject access protocol,soap)和web服务描述语言(webservices description language,wsdl)]与其他程序进行通信。这一切都是为了让程序员与其他领域的专家一起工作起来更方便。xaml和xml将成为所有各方使用的通用语言(很有可能通过开发工具和特定领域的设计工具)。对于wpf,“领域专家”是图形设计师,他们能够使用设计工具来创建灵活的用户界面,而程序员则可以独立地编写代码。但是程序员/设计师之所以能使用wpf进行合作,不仅仅是因为有通用的xaml语言,还因为人们已努力使wpf api所提供的功能可以通过声明方式进行访问。这给予设计工具巨大的表现力,而不用费心生成过程式代码了。
另外需要注意的是,wpf仅在windows vista及其以后的版本中,3d 对象有抗锯齿特性;仅在windows vista及其以后的版本中,非矩形或者透明窗口才支持硬件加速。当然,wpf控件有不同的默认主题来匹配它们的宿主操作系统。
在windows xp系统中,运行多个wpf或directx应用程序可能会让系统出现停顿,这是由于驱动的问题,在windows vista及其以后的版本中,有一个新的驱动模型来解决资源争夺的问题。它会对gpu资源进行虚拟化和安排,当多个使用gpu的应用程序同时运行时,它可以让你的系统运行得更顺畅。
by: