技术开发 频道

为你解惑之WPF经典9问详解

  第2问:WPF中的硬件加速是如何工作的?

  正如我们在前文所介绍的那样,简而言之,硬件加速就是利用硬件来替代软件算法以充分利用硬件所固有的快速运算的特性。
WPF从以下三个层次上来利用硬件加速的特性:
 


图3 WPF硬件加速的三个层次

  WPF API首先检测你的硬件系统所支持的硬件加速的等级,比如显卡的显存大小,像素深度等等。基于你所使用的硬件,WPF将从以下三种渲染模式中的选择一种作为其渲染模式:

  •第0级
  如果你的显卡不支持硬件加速,WPF将采用第0级渲染模式。也就是说它将使用软件加速。这相当于使用低于7.0版本的DirectX。
  •第1级
  如果你的显卡部分地支持硬件加速,那么WPF将采用第1级渲染模式。这相当于使用版本号在7.0到9.0之间的DirectX。
  •第2级
  如果你的显卡完全支持硬件加速,那么WPF将采用第2级渲染模式。这相当于使用版本号等于或者大于9.0的DirectX。
 
  第3问:这是否意味着WPF将取代DirectX?

  不,WPF并不会取代DirectX。DirectX将继续用于创建优异的三维游戏。DirectX的视频性能在很多时候还是高于WPF API的。当用于游戏开发的时候,从性能的角度考虑,我们总是会选择DirectX,而不是WPF。WPF并不是设计游戏的非常好的方案,当然,你可以用WPF来实现一个简单的俄罗斯方块游戏,但是对于一些需要很多动画的三维游戏,WPF就显得力不从心了。

  我们只需要记住一点:WPF是Windows窗体的替代者,而不是DirectX的掘墓人。

  第4问:那么,如何更加准确地定义WPF呢?

  WPF(Windows Presentation Framework)是一套全新的用于Windows 的显示子系统。WPF拥有一个二维和三维图形引擎。它拥有以下这些特性:

  •Windows界面
  WPF支持所有通用的Windows控件,例如按钮,复选框,滑动条等等。无论其界面使用哪种样式,WPF 应用程序都可以通过面板进行基本布局。一个面板通常包含多个控件,这些由 WPF 提供的控件包括按钮、文本框、组合框、菜单以及其他对象。这些控件如何放置取决于你所选择的面板类型。例如,网格(Grid) 允许将控件放在指定的网格上,而 画布(Canvas) 则允许开发人员将控件放在其界限范围内的任何位置。在 GUI 中,通常用户触发的事件由应用程序中的不同控件和其他类进行捕获和处理。在WPF中,我们还可以将样式和模板应用到控件组,这样就可以非常容易使应用程序具有一致的外观。

  •对文档的支持
  WPF 应用程序可以使用 XAML 的 FixedDocument 标记来显示 XPS 文档。也可以使用 FlowDocument 标记来显示流文档。流文档与传统的屏幕文档类似,能够让用户滚动浏览其内容。另外,开发人员通过设置此标记的不同属性,可以使文档更适应其环境。例如,文 档可以每次显示一页,这样读者就不必上下滚动页面了。WPF 还能够根据显示文档的窗口大小来自动确定应该把文档拆分成多少列。其目的是尽量提高屏幕上文档的可读性。

  •对图形的支持
  WPF 还支持创建二维和三维矢量图形。对于二维图形,WPF 可提供标准抽象,例如形状、画笔和绘图笔,同时还允许三维图形定义模型,以用于指定光线和摄像机位置信息。与早期技术(例如 Windows Forms 需要依赖于 GDI+ 才能绘制图形)不同的是,WPF 图形并不是使用开发人员所必须了解的单独一组概念来进行分区的。相反,用于图形的 XAML 元素能够与那些用户界面其他方面的元素自然组合。按钮可带有图形内容,文本和图形可以组合等。

  •对图像的支持
 
使用 XAML 的图像标记,WPF 应用程序可以显示不同格式的图形,包括 JPEG、GIF 以及其他格式。WPF 依靠 Windows Imaging Component (WIC) 为编解码器以及显示和存储图像的软件提供标准框架。在WPF中,通常图像元素可以与其他元素组合,能够让按钮显示图像而不是简单的文本标签。

  •动画
  WPF 提供动态显示绝大部分用户界面的内置支持。例如,放大和缩小圆圈、平滑地更改按钮大小。应用程序还可以定义包含时间线的情节提要,允许调整动画的发生顺序。

  •多媒体
  WPF 应用程序可以使用 MediaElement 标记来显示不同格式的视频和音频,包括 WMV、AVI 和 MPEG。同样,此元素也可与其他 XAML 元素相组合,例如使三维立方体的所有侧面上都显示视频。
 
  ·数据绑定
  由于许多 WPF 应用程序都需要显示数据,因此提供将数据映射到用户界面元素的自动支持功能是很有帮助的。WPF 可为包含在对象和其他源中的信息提供此类数据绑定。WPF 数据绑定还允许在显示数据前对其进行排序和筛选。

1
相关文章