代码改变世界

WPF 分辨率无关性原理

2011-06-21 22:43  hoho_luo  阅读(1184)  评论(0编辑  收藏  举报

WPF在计算窗口尺寸大小时使用的是系统的DPI设置。WPF窗口以及窗口中所有的元素都是使用设备无关单位度量。一个设备无关单位被定义为1/96英寸。

[物理单位尺寸]=[设备无关单位尺寸]*[系统DPI]=1/96英寸*96dpi=1像素。

当系统默认dpi设置为96dpi时,也就是需要96个像素填充1英寸的空间,如果系统dpi设置为120dpi(对于高分分辨率显示器),这时的物理单位尺寸为:

[物理单位尺寸]=[设备无关单位尺寸]*[系统DPI]=1/96英寸*120dpi=1.25像素。

也就是说当把系统dpi设置为120dpi时,WPF渲染引擎假定了一个设备无关单位等于1.25个像素,如果显示了一个96*96大小的按钮,物理尺寸实际为120*120(96*1.25=120)。也就是说在一个标准显示器上(96dpi)大小为1英寸的按钮,在像素高的显示器上仍然为1英寸大小。

WIN7上更改系统dpi如下图: