最近再学习WPF开发,其中提到一个特性“分辨率无关性”,主要功能就是实现开发的桌面程序在不同分辨率的电脑上显示时,会根据系统的DPI自动进行UI的缩放,从而不会导致应用程序的失真。
这个里面就提到了个系统DPI,这个其实在我们windows系统中(不论XP,还是vista之后的win7、win8、win10等),我们都可以设置。DPI就是指每英寸像素点数,及一英寸的长度上存在的像素数,它其实反映的是一个密度问题。windows系统默认情况下,系统DPI都是96DPI,这里还是得注意和显示器实际的物理DPI区别:1、系统DPI是操作系统定义的,可以修改 2、物理DPI,其实在显示器生产好后,就确定的。
之前我们在系统中把系统DPI增大后,会导致字体在显示器变大,这个是为什么呢?
下面我们就来分析下,为什么系统DPI增大后,会导致同一字体在显示器上变大。首先,我们需要知道的是,系统对同一号字体,认为尺寸都是不变的,别如9号字体的尺寸为0.1英寸,如果我们使用默认的系统DPI的值96,那么系统就会计算认为9号字体应该需要96*0.1 = 9.6个像素来显示。那么当我们把系统DPI设置成100时,同一字体尺寸不变,100*0.1 = 10 个像素来显示,而对于显示器而已,分辨率不变得情况下,就需要使用更多的像素来显示字体,这样我们看到的字自然就会变大了。