闲话WPF之一(WPF的结构)

 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的优势。

至于其中的User32组件有什么作用,偶目前的知道的就是在WPF的某些应用场景中为了某些兼容需要使用User32,其中就有DWM(桌面窗口管理)。DWM的内容又可以写上一大堆,感兴趣的朋友可以看SDK文档。

我们除了关心WPF的基本结构外,更重要的 WPF提供了什么功能,请看下图:



图中的每个黄色块都是一种媒体类型。这就表示
WPF可以处理几乎所有的媒体类型:位图、3D、音频、视频和文本等等。通过WPF,它集成了现在的GDI/GDI+D3D/OPENGL以及多媒体的DSHOW等等。所有的东西都是等同对象,不管的3D还是2D,或者文本。

结构图中的Animate块贯串了整个的结构,因为在WPF中我们可以对所有的可视内容进行动画操作。这是非常让人期待的功能。Animate下面我们再次看到了Composition引擎,前面提到过它是位于milcore组件中。开发过程中,我们的界面元素功能有多种,比如图片,视频等等,最后显示到窗口的内容可以认为只是一张图片(准确说是Surface)。这个引擎的作用就是合成这些图片和视频元素最后进行提交显示。

怎么感觉是废话一堆啊!我准备好了,大家的西红柿、鸡蛋不用吝啬的,尽管杂吧!

posted @ 2006-12-13 12:57 Yiling Lai 阅读(8088) 评论(22)  编辑 收藏 所属分类: WPF

  回复  引用  查看    
#1楼 [楼主]2006-12-13 13:04 | Yiling Lai      
文章很烂,在首页呆一段时候和大家讨论一下,很快我就拿下来
  回复  引用  查看    
#2楼 2006-12-13 15:26 | shalala      
之二呢?
  回复  引用  查看    
#3楼 [楼主]2006-12-13 15:28 | Yiling Lai      
@shalala
之二还没写完 :)
  回复  引用  查看    
#4楼 2006-12-13 15:31 | neuhawk      
wpf要过几年啊,昨天我到一个企业调研,发现他们有好几个dos应用软件,
有好几台机器是塞扬2的,晕啊,别说wpf,连vb都慢的.
不知道web慢不慢.
他们要求我们的系统能在他们的机器上运行啊,吐血.
  回复  引用  查看    
#5楼 [楼主]2006-12-13 15:42 | Yiling Lai      
@neuhawk

WPF对于一些普通应用功能确实还需要时间,但是个人觉得对于一些发烧友,又比如说多媒体爱好者, 它们追求的就是一种震撼效果。对这些用户,VISTA/WPF的普及应该不错!
  回复  引用  查看    
#6楼 2006-12-13 16:06 | 曲滨      
@neuhawk
如果项目钱富裕的话、可以考虑给客户买几台好点的计算机
而且这钱不白花。

不能因为计算机配置而放弃一切啊。

不过有些时候还是没有办法的、只能尽量了

本来我准备在下个项目里用WPF、不过....
用2D 的flash 差不多根本带不来太多用户新体验、
3D界面管理软件没设计过、也没看过、也想不出来是啥模样
公司美工3D也不强所以还是得等.... 郁闷。。。。


@580k
你不要到处发广告好不?

  回复  引用  查看    
#7楼 [楼主]2006-12-13 16:17 | Yiling Lai      
@曲滨

Advertisement was deleted :)

对WPF的应用开发我们也是一种探索、摸索阶段
  回复  引用  查看    
#8楼 2006-12-13 17:31 | neuhawk      
谁弄个3d的erp来给我们参考啊.
  回复  引用  查看    
#9楼 [楼主]2006-12-13 19:11 | Yiling Lai      
@neuhawk

做ERP啊:) 图形和多媒体应该更合适吧!
  回复  引用  查看    
#10楼 2006-12-13 21:03 | Sheva      
WPF依然是基于信息循环(Message Loop)的应用程序框架,而且WPF的所有鼠标和键盘的操作都需要通过与USER32互交才能获得。

PS:我以前写过关于WPF框架的文章:
http://www.cnblogs.com/sheva/archive/2006/02/23/336520.html

Sheva
  回复  引用  查看    
#11楼 [楼主]2006-12-14 08:27 | Yiling Lai      
@Sheva

学习了,谢谢,老兄的English一流啊
  回复  引用    
#12楼 2006-12-14 11:08 | lenew [未注册用户]
未来的Windows应用UI更加多彩了,呵呵。Vista一普及,那时候硬件应该不是问题了。
  回复  引用    
#13楼 2006-12-21 14:49 | mian [未注册用户]
支持!

  回复  引用  查看    
#14楼 2007-01-18 19:46 | 二手的程序员      
milcore 接口公开没有?
  回复  引用  查看    
#15楼 [楼主]2007-01-18 19:53 | Yiling Lai      
@ 二手的程序员

没有公开,估计也是不怎么可能直接公开的
  回复  引用  查看    
#16楼 2007-01-18 19:54 | 二手的程序员      
那原生C++可没戏了.
  回复  引用  查看    
#17楼 [楼主]2007-01-18 20:02 | Yiling Lai      
@ 二手的程序员

还是有用的,但现在有些东西还只能用.NET。在Vista中Media Foundation等还是只能用C++
  回复  引用  查看    
#18楼 2007-01-18 23:29 | 二手的程序员      
也就是说,托管代码可以访问非托管接口,反之则不行.
就象原生C++程序无法访问Java 类库一样.
  回复  引用    
#19楼 2007-11-13 16:47 | azmo [未注册用户]
落后了好久了。。。

继续学习中...
  回复  引用    
#20楼 2007-12-09 12:37 | wpf fans [未注册用户]
  回复  引用    
#21楼 2008-02-20 16:28 | SammyLan [未注册用户]
呵呵
请问一下前辈,学习WPF有什么好书介绍啊
我们下个Release也要将Civil大部分UI改成VISTA风格,也要学习WPF啊
上面的邮箱也是我的MSN,有空请多多指教
Thanks
  回复  引用    
#22楼 2008-04-21 14:38 | cnhawk [未注册用户]
兄台客气了,
学习,不了解整体的体系结构那才叫废了。

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2006-12-21 09:29 编辑过


相关链接: