96dpi 的英寸是逻辑英寸么?在programming windows中的图形基础一章描述分辨率等关系时有这样的公式
Horizontal Size (mm) = 25.4 × Horizontal Resolution (pixels)/ Logical Pixels X (dots per inch) 
可是我得到的值分别是:
320 mm  = 25.4 × 1024 / 96这样的等式明显是不成立的,这边只有96dpi不太了解.  
有谁可以解释一下 谢谢!

解决方案 »

  1.   

    使用这个函数GetDeviceCaps(HORZRES)得到320mmwindows programming中说这个值是由GetDeviceCaps(HORZRES)和GetDeviceCaps(LOGPIXELSX)按照上面公式
    得到的,可是GetDeviceCaps(HORZRES)=1024,GetDeviceCaps(LOGPIXELSX)=96,这样算起来就矛盾了
      

  2.   

    使用这个函数GetDeviceCaps(HORZRES)得到320mmwindows programming中说这个值是由GetDeviceCaps(HORZRES)和GetDeviceCaps(LOGPIXELSX)按照上面公式
    得到的,可是GetDeviceCaps(HORZRES)=1024,GetDeviceCaps(LOGPIXELSX)=96,这样算起来就矛盾了
      

  3.   

    我在用SetMode(MM_LOENGLISH)这个映射模式时,发现这个时候GDI函数里边的英寸(逻辑单位)跟现实很相符,比如我的屏幕宽度是320mm,大概12.6英寸,我画了条大概12.6英寸的水平直线,刚好占了整个屏幕,就是说LineTo函数里边的逻辑英寸跟实际值相差不大.如果96dpi里边的英寸是逻辑英寸,那么我的屏幕的实际宽度应该是1024/96=10.6666英寸.
    为什么这两个逻辑值会有这么大差距,差距是怎么产生的.96dpi里边的逻辑英寸是不是有什么特别的指向?
      

  4.   

    由于dpi是不连续的整数(比如96、120),这中间存在很大的误差,没办法。
      

  5.   

    96dpi的含义是指:96 pixels per logical inch.这是指Screen dpi。logical inch是一个可变值,跟现实生活中的inch不是同一个概念。Screen dpi的值可以通过桌面--属性--外观--高级--常规--DPI设置进行修改。Horizontal Size (mm) = 25.4 × Horizontal Resolution (pixels)/ Pixels X  Per Inch  
    我们可以通过程序可以获得近似的水平显示器尺寸(之所以为近似,因为不同的显示器获得值跟实际的值有出入,液晶显示器比较接近,而CRT就相差比较大,如果要获得精确值,只能用尺子量了),所以用程序获得显示器的物理长宽,是很难的。Horizontal Resolution 这个值就是我们平常所说的1024,1248等。这个值可以用GetDeviceCap获得。从而可以计算出每个象素的物理英寸值。