WPF
进入我们的生活已经很多年。(写这句话让我想起来了“我不做大哥好多年”。
)
个人认为在
UI
的实践中,用户需要的是易于操作的,更加绚丽的界面。这两个应该是最基本、也是最重要的宗旨。而对于开发人员就是要用最简单的方法开发出尽可能漂亮的界面,并且效率也不能太差。(要求是不是有些过分啦!)除了在一些
Web
开发和特殊的应用中,很少有开发组配备单独的美工,至少目前是这样吧!根据自己目前对
WPF
的了解程度,感觉
WPF
在其中某些方面确实有超强的震撼力。
客观上讲, Vista 操作系统确实给我们带来了无可比拟的视觉效果。我自己深有体会,在近 2 个月的时间里每天都是在 Vista 下的开发,回家后看到 XP 系统,始终有些不爽的感觉。
WPF 可以认为是 MS 利用原有 .NET 框架的一些特色,加上 DirextX 的产物。从下图的 WPF 组件中,我们可以看出最底层仍然是一些内核 API 。(以下两张图片都来自互联网。)
其中红色显示的组件是 WPF 的核心。 Milcore 是一个和 DirectX 交互的非托管组件,非托管代码能带给我们更高效的处理,能更好的和 DirextX 交互。 WPF 的所有显示都是由 Dirext 完成的。 milcore 中一个非常重要的功能就是 Composition 引擎,这个引擎对效率的要求很高,它的具体作用稍后介绍。所以 milcore 放弃了一些 CLR 的特征来换取效率。而另外两个红色的组件都是建立在 CLR 基础之上,利用了 .NET 的优势。
客观上讲, Vista 操作系统确实给我们带来了无可比拟的视觉效果。我自己深有体会,在近 2 个月的时间里每天都是在 Vista 下的开发,回家后看到 XP 系统,始终有些不爽的感觉。
WPF 可以认为是 MS 利用原有 .NET 框架的一些特色,加上 DirextX 的产物。从下图的 WPF 组件中,我们可以看出最底层仍然是一些内核 API 。(以下两张图片都来自互联网。)
其中红色显示的组件是 WPF 的核心。 Milcore 是一个和 DirectX 交互的非托管组件,非托管代码能带给我们更高效的处理,能更好的和 DirextX 交互。 WPF 的所有显示都是由 Dirext 完成的。 milcore 中一个非常重要的功能就是 Composition 引擎,这个引擎对效率的要求很高,它的具体作用稍后介绍。所以 milcore 放弃了一些 CLR 的特征来换取效率。而另外两个红色的组件都是建立在 CLR 基础之上,利用了 .NET 的优势。
至于其中的User32组件有什么作用,偶目前的知道的就是在WPF的某些应用场景中为了某些兼容需要使用User32,其中就有DWM(桌面窗口管理)。DWM的内容又可以写上一大堆,感兴趣的朋友可以看SDK文档。
我们除了关心WPF的基本结构外,更重要的 是WPF提供了什么功能,请看下图:
图中的每个黄色块都是一种媒体类型。这就表示WPF可以处理几乎所有的媒体类型:位图、3D、音频、视频和文本等等。通过WPF,它集成了现在的GDI/GDI+、D3D/OPENGL以及多媒体的DSHOW等等。所有的东西都是等同对象,不管的3D还是2D,或者文本。
结构图中的Animate块贯串了整个的结构,因为在WPF中我们可以对所有的可视内容进行动画操作。这是非常让人期待的功能。Animate下面我们再次看到了Composition引擎,前面提到过它是位于milcore组件中。开发过程中,我们的界面元素功能有多种,比如图片,视频等等,最后显示到窗口的内容可以认为只是一张图片(准确说是Surface)。这个引擎的作用就是合成这些图片和视频元素最后进行提交显示。
怎么感觉是废话一堆啊!我准备好了,大家的西红柿、鸡蛋不用吝啬的,尽管杂吧!
本文转自赖仪灵博客园博客,原文链接:http://www.cnblogs.com/YilingLai/archive/2006/12/13/590773.html,如需转载请自行联系原作者。