什么是逻辑英寸?这个DPI 在看VC++中关于模式映射的时候看见
发布网友
发布时间:2022-05-16 01:59
我来回答
共1个回答
热心网友
时间:2023-05-11 03:58
1.逻辑尺寸是逻辑上的尺寸,抽象的看不到的,CDC的成员函数都是按逻辑尺寸。设备尺寸是看得到的、能度量的,就是表示屏幕尺寸,用像素来度量。CWnd 里面的函数使用的尺寸都是设备尺寸。(具体的显示器上2个像素之间到底是多少毫米,暂时不关心,也就是说,从所谓的“设备尺寸”到实际的“显示器尺寸”还是有一个转换,但是这点一般不需要我们操心,默认就行了)。
当DC的映射模式为MM_TEXT(默认就是这个)时,逻辑尺寸=设备尺寸,也就是说LineTo函数里面的直线距离,就是画在显示器上的像素点数,所以在MM_TEXT模式下,虽然我们确定输出的像素数目,但是由于显示器规格的不同,我们并不确定输出的图形的物理尺寸是多少毫米(但当是别的模式时候,另当别论...)
2.刚才在1中说到了,从设备尺寸到显示器尺寸有个映射,这就是DPI了,DPI的定义:每英寸的点数。也就是来描述显示器上2个像素点之间的实际距离的(也就是点距是多少mm,一般的显示器crt/led的点距规格有0.39,0.31,0.28,0.26,0.24,0.22, 0.20mm 这些规格)。这个跟显示器的分辨率没关系,分辨率是描述行列的像素个数,DPI是描述点距——在网上看显示器的规格说明,上面一般都有点距说明的。不过描述显示器的点距一般是使用PPI(跟DPI实际上概念差不多)。一般都是直线一英寸。
一般显示器的PPI规格都指的是最小点距,也就是调整成最大分辨率的时候2个像素之间的距离。比如一个17寸的显示器,如果你把显示的分辨率变小(800×600),像素点距就变大了(当然,显示器在输出的时候,有一个插值过程,将显示缓存里面的800×600像素的点,映射到物理设备的1600×1200(假如最大知支持这个分辨率)个点,毕竟物理设备上输出,总不能只输出800×600个点,那岂不是咱们看到的显示效果,看起来都成纱布了)。
所谓的96DPI,120DPI的设置,是用来设置显示字的大小的。因为字号的定义:5号汉字就表示6mm高的一个字符显示图像(6mm是我假定的,当然各种字体显示效果是不一样的),也就是说你用钢笔写字,写一个5号字就是6mm高,如果写大了,当然就是4或者321号字了。而计算机显示器的显示输出的时候,我们不管5号字显示后在屏幕上的的实际高度是多大,可以让它(5号字)显示的非常大,但是我们就认定了,这么大的字就是5号字。
所以,我们可以设置96DPI,120DPI就是这个道理,我们让一个5号字显示大点,占用120个像素点(设备尺寸,对应分辨率的),或者自定义的更大。这样看起来眼睛舒服,但是不影响打印输出。
——有点复杂,不知道听懂没有噢