一、 WPF介绍

        从来没想好好阅读一本关于编程方面的书,我个人喜欢买书,但是买书仅仅局限于某个项目会用到某本书中的某项技术!在一个项目结束之后,书籍也就束之高阁,再也失去了他的价值!最近想静下心来编写一个貌似有点技术含量的软件,全部工作均打算在空余时间完成,为了某个诺言,也为了考验自己到底还剩下多少耐心来静静地看完一本书!

      打算整个系列的WPF一一细读,并加入自己学习过程中的某些体会,里面可能有些自己认识上的误区,也希望高手看到的时候不吝赐教,也希望可以帮助跟我一样想学习WPF的朋友们,共同交流提高!

      希望循序渐进又不失速度地完成整个系列!

       那么---现在开始第一章(WPF介绍)!

 
        WPF, Windows Presentation  Foundation,中文又称Windows演示基础,是一个用于Windows的图形显示系统!WPF是针对.Net而设计的,受现代显示技术(如HTML和FLASH)以及硬件加速技术的影响!

       以前,标准Windows应用程序主要依靠以下两种技术来创建用户界面:

          1.  User32---为许多元素(如按钮,窗口,文本框等)提供了熟悉的Windows外观

          2. GDI/GDI+---为渲染简单形状,文本以及图像提供了绘图支持,但是增加了复杂程度,但是整体性能较差

             比如说,我们都熟悉的MFC,就是使用以上两种内容,做了一个封装器,虽然减少了程序员编写代码的部分工作,但是整体上而言,整个MFC仍然受制于界面比较单一,所使用的资源工具有限,如果要编写一个比较炫目多彩的软件界面,我们往往需要在MFC基础上做大量的工作才能得到我们或者客户想要的效果!

           为了解决User32和GDI/GDI+的效率问题,微软提供了一个解决方案:DirectX; DirectX最初主要是针对Windows平台上游戏而设计,重点关注速度,并与显卡供应商合作,以便为DirectX提供复杂的纹理映射,特殊效果(如半透明),以及三维图形所需要的硬件加速!

           在WPF中,底层的图形技术不再是GDI/GDI+,而是使用DirectX。需要强调的是,不管创建那种用户界面,WPF应用程序在底层都是使用DirectX;当然WPF也会根据自身系统以及显卡的配置来决定使用的级别,这些也是显而易见的!

        WPF除了使用DirectX作硬件加速意外,还提供了很多高级服务:

  • 类似Web的布局模型:采用灵活的流式布局,而不再使用坐标来做定位,可以灵活排列控件,从而适应多变的内容以及多语言的需要!
  • 丰富的绘图模型:
  • 丰富的文本模型:
  • 作为首要编程概念的动画;
  • 支持音频和视频媒体:WPF支持所有WIndows媒体播放器支持的多媒体文件
  • 样式和模板:对于现代具有皮肤软件具有重要意义
  • 命令:可以将同一个命令映射到多个控件
  • 声明式用户界面:通过编写修改XAML文件来修改创建界面
  • 基于页面的应用程序:创建如浏览器一样的软件


      与一般的Window应用程序相比较,WPF应用程序具有分辨率无关性,这样也就保证了WPF应用程序在换到不用分辨的显示器上显示的时候,可以保证与设计时的尺寸一直!这样就不会因为分辨率的问题导致用户界面发生控件大小的改变,飘移,或者消失的情况!

          ***WPF体系结构:

       WPF使用一个多层的体系结构。在顶层,应用程序和一个完全由托管的C#代码编写的一组高层服务进行交互!至于将.Netd对象转换为Direct3D纹理和三角形的实际工作,是在后台由一个叫做milcore.dll的低级的非托管组件完成的!milcore.dll是使用非托管代码实现的,因为他需要和Direct3D紧密集成,并对他对性能非常敏感!

      下图显示了WPF应用程序中各层的工作情况:

                       

  • PresentationFramework.dll  包含了WPF顶层的类型,包括那些表示窗口,面板以及其他类型控件的类型。开发人员直接使用的大部分类都来自这个程序集!
  • PresentationCore.dll  包含了基础类型,比如UIElement类和Visual类,所有形状类和控件类均继承自这两个类!
  • WindowsBase.dll  包含了更多的基本要素,这些要素具有在WPF外重用的潜能!
  • milcore.dll  是WPF渲染系统的核心,也是媒体集成层的基础!其合成引擎将可视化元素转化为Direct3D所期望的三角形和纹理!
  • WindowsCodecs.dll 是一套提供图像支持的低级API(例如,处理,显示以及缩放位图以及JPEG图像)
  • Direct3D是一套低级的API,WPF应用程序中所有的图形都由它来渲染!
  • Use32用于决定哪些程序实际占有桌面的哪一部分!它仍然被包含在WPF中,但是已经不再使用它来渲染通用控件!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值