技术开发 频道

VS 2010和.NET 4.0之WPF 4改进全解析

  【IT168 技术】WPF (Windows Presentation Foundation)是.NET框架的核心组件之一,允许开发人员打造丰富并且与众不同的Windows客户端应用。WPF 4包含了在生产力,性能和功能方面的重大改进,特别是在控件(Controls), XAML, 文本(Text), 图形(Graphics), Windows 7 集成(多点触摸(multitouch), 任务栏集成等), 核心基础(Core Fundamentals), 以及部署这几个方面。 本文是我在接下来的几个月里介绍其中一些改进和新特性的若干个贴子的第一篇。

  不久我还将另写专文讨论VS 2010中的 WPF 和 Silverlight设计器中的一些重大进步,该设计器还包含了一堆改进。

  控件

图1 WPF 4 控件

  1 可用于打造富客户端的控件

  WPF 4添加了各种新控件,使得客户端丰富的行业(line-of-business)应用的打造更加容易,也更快。新的也更丰富的控件集包括了象DataGrid, DatePicker, 和 Calendar这样的行业应用必备控件。这些新控件与它们在Silverlight中的对应控件在API和行为方面99%的兼容,允许开发人员通过在Silverlight和WPF实现间重用代码,在优化了工作流程的的同时,创建一个横跨客户端和web的一致的体验。

  2 诀窍袋(Bag O’ Tricks)又回来了

  我们还将发布被称为WPF诀窍袋(Bag O’ Tricks)的8个额外的控件的下载,它包括下列控件:AnimatingTilePanel, ColorPicker, InfoTextBox, ListPager, NumericUpDown, Reveal, TransitionsPresenter, TreeMapPanel。

  3 Windows 7和Office Ribbon控件

  在WPF 4发布之后不久,会推出一个新的WPF Ribbon控件供下载。它包括针对Windows 7 和 Office的皮肤,以及为终端用户所熟悉的所有的标准Ribbon特性,包括tab(选项卡)和 group(组),动态改变大小,快速访问工具栏(quick access toolbar),应用菜单,上下文相关选项卡(contextual tabs),键提示(key tips)等等。

图2 Windows 7和Office Ribbon控件

  WPF Ribbon是完全可扩展的,以满足将来版本的设计指引的变化, 今天在这里有一个包含有限特性集的CTP。

  图形(GRAPHICS)

  1 缓存合成(Cached Composition)

  这免去了CPU和GPU重新渲染内容的代价,而允许GPU直接从缓存来做渲染。这个缓存理解被更新了的“脏”区域(dirty region),因此,举个例子来说,被缓存的文本块(textblock)中闪烁的光标,只需要在帧间重新渲染光标。甚至还有一个专门使用这些智慧缓存的新Brush,实际上,就是一个性能超佳的的VisualBrush。

图3 Cached Composition

  2 像素着色器(Pixel Shader)3的支持

  WPF 4是建立在一个非常受欢迎的,最初是在 WPF 3.5 SP1中引进的着色器效果(ShaderEffect)支持之上的,允许应用程序使用像素着色器(Pixel Shader)的第三个版本来编写效果(Effects)。像素着色器第三个版本的着色器模型较之第二个版本,显著地更为先进,在支持的硬件上能允许更加引人入胜的效果。

  3 LayoutRounding (布局舍入)

  WPF 4采用了UseLayoutRounding属性,最初是在Silverlight 2中引进的。WPF的布局引擎经常要计算亚像素的定位坐标,这会在定位于亚像素边界的元素在多个物理像素上做平滑处理(anti-aliased,消除锯齿)时,造成渲染假象(artifact)。

  UseLayoutRounding会迫使布局引擎将元素置于整数像素(whole pixel)边界上,从而除去由这个问题导致的大部分渲染假象,默认生成更清晰分明的界面。

  4 动画缓动函数(Animation Easing Function)

  不连续的,直线式和样条曲线(spline)式动画在WPF的以前版本中就支持,WPF 4引进了一个叫Easing Functions(缓动函数)的新概念,允许应用程序的作者使用动画创建流畅的行为。其使用方式多种多样,譬如,创建一个弹跳式(springy)行为,或者添加对动画的预期等。缓动函数可以定制动画从开始进行到结尾的方式,内置的缓动函数提供了很大范围的行为,例如圆形的(circular),指数型的(exponential),有弹性的(elastic),反弹型的(bouncy)动画进程等。其扩展性设计还允许应用程序的作者创建自定义的缓动函数来定义他们的动画进程的方式。由于其之易用性,设计师可以毫不费力地创建自然流畅的动画。

图4 动画缓动函数

  5 CleartypeHint

  新的CleartypeHint附加属性允许应用程序的作者能在许多原先是无法使用的场合启用高质量的Cleartype文本渲染。这样的场合包括分层窗口中的文字,VisualBrush, DrawingBrush, 和BitmapCacheBrush中的文字,以及任何中间的渲染对象的引入会导致灰度文本渲染的地方。

0
相关文章