WPF单位真的与分辨率无关吗?2011-04-10 博客园 helloj2eeWPF从发布之日起,一直将“分辨率无关(resolution independence)”作为其 亮点,声称使用WPF制作的用户界面在轻巧的Ultra-Mobile PC的屏幕上和在50英寸的电视机 上都能很好地显示。微软之所以称WPF具备“分辨率无关”这一特性,主要是因为 WPF的坐标单位设计成为以1/96英寸为一个逻辑像素单位,而不是与设备相关的像素单位。但是微软本身对WPF“分辨率无关”这一特性没有作更多的具体解释,导致用 户会产生很多误解。误解之一改变显示器的分辨率设置,同一个WPF的用户界面和绘制的图形尺寸不会变化。这个可以用一个非常简单的实验证明该结论是错误的。新建一个WPF应用程序窗口,其中 高度为400DIUs(DIU:Device independent unit,设备无关单位),宽度为600DIUs,让这 个窗口分别在分辨率设置为1280 * 1024和800*600的环境下运行,如下图所示,两个窗口的 尺寸是明显不一样的。

图 1 左图为1280 * 1024分辨率,右图为800*600分辨率误解之二改变显示的DPI设置,同一个WPF的用户界面和绘制的图形尺寸不会变化。显示的DPI设置,在XP系统下是通过右键——属性——设置选项卡 ——高级,可以调用出来,如下图所示:

图 2 显示属性DPI设置这个也可以用同样的方法进行证明该结论是错误的。仍然是高度为400DIUs[1],宽度为 600DIUs的窗口分别运行在96DPI和192DPI两种设置环境下。从下图也可以明显看出窗口的尺 寸是不一样的。

图 3 左图为96DPI,右图为192DPI