DPI是图像每英寸长度内的像素点数。本说明文件里的提到的DPI都是显示器DPI,不是鼠标DPI,不要弄混了。改变DPI可以缩放应用程序的窗口。windows系统中显示器DPI可以自己设置,在“屏幕分辨率”或“显示设置”里可以找到它的设置,不同系统中这个设置的说法有点差异,例如:WIN7中是“放大或缩小文本和其它项目”,WIN10中是“更改文本、应用等项目的大小”(WIN10各版本有差异,有些版本可能不一样)。
windows为了兼容老程序,DPI有多种设置,WIN8.1以前有“无DPI感知”和“系统DPI感知”两种,WIN8.1开始因为支持多显示器不同DPI,又增加了“每个显示器DPI感知”。不同DPI感知的坐标是不同的。每个进程可以单独设置自己的DPI感知上下文,在WIN10中甚至可以每个线程设置不同的DPI感知上下文。
“无DPI感知”:这是为了兼容不支持DPI缩放的程序,系统自动帮它处理程序窗口缩放文件,但处理得很差,显示器DPI不是100%时界面文字会模糊,且与屏幕有关的API坐标与显示器像素不是一一对应关系。
“系统DPI感知”:在WIN8.1以前,与屏幕有关的API坐标与显示器像素是一一对应关系,从WIN8.1开始,如果其它显示器与主显示器DPI不同,程序窗口在其它显示器中会变模糊,且与屏幕有关的API坐标在其它显示器中像素不是一一对应关系。
“每个显示器DPI感知”:与屏幕有关的API坐标与显示器像素是总是一一对应关系。
当显示器DPI都是100%时,几种DPI感知的上文中,与屏幕有关的API坐标与显示器像素都是一一对应关系。