WPF学习一--概述
Q Q:408365330 E-Mail:egojit@qq.com
自从做IT“出道”以来接触最多的就是Web开发,也就是ASP.NET,做过ASP.MET的 WebForm和MVC。毕竟B/S架构是个趋势。也有一段时间在做WinFrom。最近学习WPF。
很多年以来做Windows开发的用以下两个以来已久的创建用户界面:
1.User32 该部分许多元素提供我们熟悉的Windows外观(了解Window API的可能更清晰点)。
2.GDI/GDI 大家都很了解,改部分为渲染简单形状,文本以及图像做支持。也就是提供了一些简单的绘图支持。
不管我们过去用到到的MFC还是.NET的WinForm从本质上讲还是最User32和GDI/GDI+的分装,只不过分装的更好一点,让我们省去了很多细节的关注。让我们更容易写出一个Windows程序。当然这些框架不可避免的被老思想和老方法局限这。
同时Microsoft针对以上两者的限制,为我们提供了一个解决方案,也就是我们比较熟悉的DirectX,它在设计上注重速度,DirectX提供了更加复杂的纹理映射和特殊效果和3D硬件加速效果。因此它几乎不用于Windows窗体开发,而是用于游戏开发。但是重点是WPF改变了这一现状。WPF的底层不在是GDI/GDI+,而是DirectX,所以WPF元素不管是按钮还是文本都是通过DirectX管线去完成的,所以即使是普通程序也可以有很炫的效果,例如半透明和反锯齿。当然这让我们也享受到了DirectX的好处,在渲染图形时尽可能的将工作交给GPU去做(显卡专用处理器)。
我们需要注意:WPF充分利用显卡,所以如果显卡驱动是个老掉牙的驱动,那肯定是达不到我们想要的渲染效果,因此WPF也不能为我们提供硬件加速功能。当然在Window7中WPF提供很好的性能(WPF在vista已前版本的系统中不是不能工作,只是效率没有vista及以上的操作系统中高)。
一.都说WPF是革命,革命就得有翻天覆地的变化。
1.类似Web的布局模型(和Android的布局文件很想)
2.丰富的绘图模型
3.丰富的文本模型
4.动画作为WPF的固有部分
5.更好支持视频和音频媒体
6.支持样式和模板
7.命令:大家知道在菜单和工具栏触发“打开”按钮本质上命令是没有区别的。现在通过抽象们可以在特定的位置定义程序命令并将它链接到多个按钮上去。
8.通过声明的方式定义用户界面XAML
9.基于页面的应用程序
10.Silverlight “基于浏览器的WPF”
当然这些是革新,作为新技术如果只是革新,没有继承。那么是无用的。毕竟不可能从原始社会到共产主义。WPF为老式的Win32程序进行了集成。当然不是WPF本质上通过DirectX去渲染,那么我们就可以丢弃DirectX(DirectX开发起来太繁琐和麻烦)。即使再繁琐作为游戏领域的高效率要求还是直接上DirectX比较妥当。最大限度的利用显卡我们还是需要原始的DirectX编写更低层次的代码。
二.WPF是分辨率无关性的。
三.WPF体系结构
1)PersentationFramework.dll:WPF顶层的抽象,包括窗体,面板,类型等类型。
2)PresentationCore.dll :包含基础类型,包括UIElement类和Visual类。所有形状类和控件类都基础自这个类
3)WindowsBase.dll :这里包含更多基本元素
4)milcore.dll :WPF渲染系统的核心
5)WindowsCodecs.dll :提供图像支持的低级API
6)Direct3D : WPF所有图形都由它渲染
7)User32 :负责程序占用桌面哪一部分,不再负责渲染通用控件
看了这么多,我相信你觉得研究WPF了吧!:)