读书人

怎么获取屏幕的点距?就是两个像素点之

发布时间: 2012-09-25 09:55:58 作者: rapoo

如何获取屏幕的点距?就是两个像素点之间的距离。
或者,如何获取屏幕的真实大小,长多少厘米?宽多少厘米?

[解决办法]
DPI是操作系统设定的,一般的软件用这个就可以了。因为它是可以修改的,也就是说用户可以用它决定文字大小之类的。Windows默认96DPI,点距0.264mm左右,和17英寸的普屏显示器是一致的。所以在这种显示器上能达到所见即所得的尺寸,其它显示器需要设置。
通过显示器的DDC通道显卡可以读取显示器的点距等硬件信息,这个信息被称作EDID。典型的信息如下:

> --- EDID Information for display device DFP-0 ---
> Manufacturer: GSM Model: 101 Serial#: 34596322
> Year: 2004 Week: 3
> EDID Version: 1.3
> Digital Display Input
> Max H-Image Size [cm]: horiz.: 71 vert.: 40
> Gamma: 2.20
> No DPMS capabilities specified; RGB/Color Display
> First detailed timing is preferred mode
> redX: 0.640 redY: 0.340 greenX: 0.300 greenY: 0.690
> blueX: 0.138 blueY: 0.038 whiteX: 0.270 whiteY: 0.365
> Manufacturer's mask: 0
> Supported additional Video Mode:
> clock: 74.2 MHz Image Size: 708 x 398 mm
> h_active: 1920 h_sync: 2008 h_sync_end 2052 h_blank_end 2200 h_border: 0
> v_active: 540 v_sync: 542 v_sync_end 547 v_blanking: 562 v_border: 0
> Supported additional Video Mode:
> clock: 27.0 MHz Image Size: 708 x 398 mm
> h_active: 720 h_sync: 736 h_sync_end 798 h_blank_end 858 h_border: 0
> v_active: 480 v_sync: 489 v_sync_end 495 v_blanking: 525 v_border: 0
> Ranges: V min: 59 V max: 60 Hz, H min: 31 H max: 45 kHz, PixClock max 80 MHz
> Monitor name: C32V37
> --- End of EDID Information for display device DFP-0 ---

其中包括图像面积,配合分辨率,可以很容易计算出物理点距。
具体编程实现的方法,请看(需.要.翻.墙):
http://thetweaker.wordpress.com/2011/11/13/reading-monitor-physical-dimensions-or-getting-the-edid-the-right-way/
[解决办法]

探讨你好,你调试过代码了吗?

我这里翻不了墙。。

能不能贴上来参考一下?

读书人网 >C++

热点推荐