传统DPI缩放机制
传统DPI缩放机制被Windows XP所采用,由开发者自行检查字体缩放后是否存在潜在的问题。
优点:字体清晰
缺点:排版错乱(UI元素文本框重叠、表格文字溢出、界面超越屏幕边缘)
现代DPI缩放机制:DPI虚拟化
现代DPI缩放机制被Windows Vista/Win7/Win8/Win8.1所采用。如果DPI缩放比例不超过125%,继续使用传统DPI缩放机制,超过之后就开启这个新模式。需要指出的是,125%缩放比例在多数情况并不会造成严重的界面错乱,而且缩放后字体清晰。
具体来说,对于报告支持DPI自适应的程序,系统将停用DPI缩放。
对于没有报告支持DPI自适应的程序,系统将采用如下机制:
缩放比例如果为100%的整数倍,系统采用一点对多点进行缩放。当选择缩放比例为200%/300%/...,原有界面中1点依次对应4点/9点...。
缩放比例如果为非100%的整数倍,系统首先给应用提交虚拟分辨率,然后由系统离屏渲染软件界面,再放大到用户选择的DPI级别上。
以1920*1080分辨率,缩放比例150%为例。系统首先向应用提交当前的分辨率为1280x720,获得离屏渲染的界面以后,再使用常规的图像插值算法进行放大。需要提醒的是,插值将不可避免的导致界面模糊,字体锯齿等一系列问题。
优点:界面正常
缺点:界面模糊
Win10 DPI缩放机制:完全的DPI虚拟化
Win10 DPI缩放机制绝大多数部分与现代DPI缩放机制一致,唯一不同是所有DPI级别(包括125%)均采用DPI虚拟化机制,保证界面正常。
▲左侧为Win10 DPI机制,右侧为Win8.1 DPI机制
最后简要介绍下MAC DPI缩放机制,Retina屏幕统一采用200% DPI缩放级别,实现原理和Windows没有任何区别。唯一的不同是,MAC OS X软件在显示视频和图像时,视频图像区域采用100% DPI,以保证视频和图片的显示质量。