WPF与Win32——《IT168》
来源:互联网 发布:java 计算句子相似度 编辑:程序博客网 时间:2024/05/01 02:03
GDI是当今应用程序的主流图形库,GDI图形系统已经形成 了很多年。它提供了2D图形和文本功能,以及受限的图像处理功能。虽然在一些图形卡上支持部分GDI的加速,但是与当今主流的Direct3D加速相比还 是很弱小。GDI+开始出现是在2001年,它引入了2D图形的反走样,浮点数坐标,渐变以及单个象素的Alpha支持,还支持多种图像格式。但是, GDI+没有任何的加速功能(全部是用软件实现)。
当前版本的WPF中,对一些Win32功能还没有很好的支持,比如WMF/EMF文件,单个象素宽度的线条等等。对于这些需求还需要使用GDI/GDI+来实现。
在Windows Vista中,GDI和GDI+仍然支持,它们与WPF并行存在,但是基本上没有任何功能性的改进。对GDI和GDI+的改进主要集中在安全性和客户相关 问题上。WPF的所有提交都不依赖于GDI和GDI+,而是Direct3D。并且所有的Primitive都是通过Direct3D的本地接口实现的。 还记得我前面随笔中提到过的Milcore吗?它就是和Direct3D交互的非托管代码组件。由于WPF的大部分代码都是以托管代码的形式存在的,所以 WPF中有很多托管、非托管的交互。当然,在一些图形卡不支持WPF所需要的功能时,WPF也提供了稍微低效的软件实现,以此来支持在某些PC上运行 WPF应用程序。
在Windows Vista中,Direct3D的关键改进就是引入了新的显示驱动模型。VDDM驱动模型虚拟化了显卡上的资源(主要是显示内存),提供了一个调度程序, 因此多个基于Direct3D的应用程序可以共享显卡(比如WPF应用程序和基于WPF的Windows Vista桌面窗口管理)。VDDM的健壮性、稳定性也得到了提高,大量的驱动操作从内核(Kernel)模式移动到了用户(User)模式,这样提高了 安全性,也简化了显示驱动的开发过程。
在Windows Vista中存在两个版本的Direct3D:Direct3D 9和Direct3D 10。WPF依赖于Direct3D 9,这样能更广泛的解决兼容性问题。另外一个非常重要的原因就是为Vista的服务器版本提高方便,因为服务器版本的Vista对显卡和Direct3D 基本上没有任何的要求。同时WPF也支持Direct3D 10。Direct3D 10依赖与VDDM,只能在Windows Vista上使用。由于Windows XP没有VDDM,虽然Microsoft做了很大的努力来改善XP中Direct3D 9相关驱动,提高内容的显示质量,但是由于XP中没有对显卡资源的虚拟化,强制所有的应用程序都用软件提交。
WPF对某些多媒体的功能支持还需要依赖老的技术,比如DirectShow。当我们进行音频视频的捕捉或者其它任务时,只能直接用DirectShow实现,然后再用HwndHost嵌入到WPF内容当中。
利用类似的技术,我们可以在WPF应用程序中显示自定义格式的内容。通过提供自定义的DirectShow CODEC,然后用Media元素实现和WPF内容毫无限制的集成。
另外,WPF对XPS等文档的打印输出也得到了极大的改善。XPS文档本身的规范也极大的提高了其打印的质量,XPS文档的规范可以参考MSDN的资料。 除了打印,Vista操作系统中对远程的改进也部分依赖于WPF,比如有远程协助、远程桌面和终端服务等等。它们的实现过程是通过发送一系列的“远程”命 名到客户端,客户根据自己PC的性能和命名进行显示,这样显示的质量能得到极大的提高。
在WPF中,对Direct3D进行各种封装。当然,如果你本身对Direct3D/OpenGL很熟悉,也可以直接在WPF中使用。封装后的 Direct3D更容易使用。并且在Web应用程序(XBAP)也可以使用Direct3D。在WPF中使用的Direct3D,没有直接用非托管代码控 制所拥有的灵活性,也不能直接对硬件进行底层控制。
WPF中所有的提交都是矢量形式的,我们可以对图像或窗口进行任意级的放缩,而图像的质量不会有任何的损耗。
- WPF与Win32——《IT168》
- WPF中的命令与命令绑定——出自《IT168》
- WPF中的命令与命令绑定——出自《IT168》
- WPF开发简介——出自《IT168》
- WPF的数据处理——出自《IT168》
- WPF图形系统——出自《IT168》
- WPF中的Style——出自《IT168》
- WPF指南之WPF的结构——出自《IT168》
- WPF中控件与控件值的绑定——出自《IT168》
- WPF指南之XAML概述——出自《IT168》
- WPF中的命令简述——出自《IT168》
- WPF中的控件模板(ControlTemplate)——出自《IT168》
- WPF中的控件模板(ControlTemplate)——出自《IT168》
- 揭露WPF SDK“不能说的秘密——出自《IT168》
- WPF性能优化点——出自《IT168》
- WPF性能优化点——出自《IT168》
- WPF中的传递事件——出自《IT168》
- WPF的Attached属性——出自《IT168》
- 使用C# 创建邮件发送组件(SMTP协议)
- SQL Server索引简介
- 赛孚耐:三套方案应对云安全
- Ansi,Unicode(little endian),Unicode big endian,UTF-8编码文件相互转换
- 分页存储过程
- WPF与Win32——《IT168》
- gateway.dll是什么?
- 内网安全四级可信认证机制
- 2007年08月《安全天下事》
- VPN
- drwxr-xr-x 2 root root 4096 06-29 14:30 Test 分段解释
- 显示桌面图标不见
- 通过防火墙端口映射出现问题
- 在日志中输入当前文件及行数