WPF的两大亮点
一、硬件加速
WPF 图形显示是基于DirectX(最初是为游戏显示开发的图形显示引擎),而非GDI/GDI+。
WPF的目标是将尽可能多的工作交给显卡处理,所以复杂图形通常属于渲染范围(由GPU处理)而不属于处理器范围(由计算机的CPU处理)。也就是说,可以让CPU空闲下来去完成其他工作,充分利用显卡的功能,并且还可以充分利用未来新显卡所具备的不断增加的新功能。
WPF渲染级别(WPF TIERS)
显卡功能的区别是非常重要的。当WPF访问显卡时,它会考虑许多因素,包括显卡上RAM的数量、对像素着色器(pixel shader)的支持(显卡提供的计算每个像素效果的程序,如透明效果),以及对顶点着色器(vertex shader)的支持(显卡提供的计算每个三角形顶点数值的程序,如3D对象的着色)。根据这些细节,WPF会指定一个渲染级别值。
WPF提供了三个渲染级别,如下所示:
Rendering Tier 0:显卡将不提供任何硬件加速功能。该级别和7.0或更低版本的DirectX相对应。
Rendering Tier1:显卡可以提供部分硬件加速功能。该级别和7.0以上9.0以下版本的DirectX相对应。
Rendering Tier2:所有的特性都将被硬件加速。该级别和DirectX 9.0及以上版本相对应。
二、与分辨率无关
1、系统DPI:1英寸上的像素点(默认为96)。1英寸=2.54厘米
如何计算系统DPI:如图
23英寸-是包含边框的。
可视面积-是显示器显示板的大小,转换为英寸
509.184/10/2.54 = 20.04英寸 - 宽
286.416/10/2.54 = 11.28英寸 - 高
分辨率设置为1920×1080,则当前系统DPI:
1920/20.04 = 96
1080/1128 = 96
改变“显示”或“分辨率”设置,都会使系统DPI改变(非默认的96,一般显示器默认都为96)
WPF从发布之日起,一直将“分辨率无关(resolution independence)”作为其亮点,声称使用WPF制作的用户界面在轻巧的Ultra-Mobile PC的屏幕上和在50英寸的电视机上都能很好地显示。微软之所以称WPF具备“分辨率无关”这一特性,主要是因为WPF的坐标单位设计成为以1/96英寸为一个逻辑像素单位,而不是与设备相关的像素单位。
(1)WPF在打印得时候可以做到“分辨率无关”,即同一个WPF用户界面和绘制的图形尺寸在任何一台打印机上输出都是一致的;
(2)当显示器实际象元的物理尺寸和系统设置的DPI保持一致的时候,WPF可以在显示器上做到“分辨率无关”,即同一个WPF用户界面和绘制的图形尺寸在任何一台显示器(实际象元的物理尺寸和系统设置的DPI保持一致)上输出都是一致的。反之则无法保证。
两台机器上的1英寸里的像素点个数一样,则上面显示的东西大小不会变。
两天机器的DPI不一样则显示的界面大小不一样
个人总结:只要设备的分辨率为默认分辨率,则WPF的元素尺寸在这些设备上都不会变。