制作电子版视力表,因为要遵循国标,所以屏幕上显示的E字视标要符合国标的规定,比如5.0(1.5)的视标边长为7.27mm。windows系统下显示的是逻辑尺寸,并不一定是实际的尺寸,针对不同的显示器、投影仪,以及不同的windows分辨率,应该怎么做才能使屏幕上显示的是实际的尺寸。换句话说,怎么能够在屏幕上画一条1cm长的线,用现实中的刻度尺测量也是1cm。分不多了,只有100,哪位大侠赞助我一点分。

解决方案 »

  1.   

    GetDeviceCaps函数可以获得指定dc的象素尺寸和毫米尺寸,当然还可以获得其他单位的尺寸。不过国人都喜欢mm不是吗,至少我是很喜欢mm的。呵呵mm = GetDeviceCaps(hdc, 4)
    px = GetDeviceCaps(hdc, 8)拿 px/mm就是每毫米上的象素,再乘以实际尺寸的毫米数,就是实际尺寸对应的象素。余下的不用我说了吧?顺便说一下,我真的好喜欢mm。哈哈
      

  2.   

    programart_life(理论派) 的方法可行
      

  3.   

    小仙妹的方法不错。programart_life(理论派)说的“最终的结果显示出来后和实际尺寸还是有少许差别的,如果想用画出来的做真正的尺子来量东西是不行的。”也不错,但软件在第一次校准后,就可以永久使用了,这应该不是问题。我采用小仙妹的方法。
      

  4.   

    to sequh(夏克)
    如果调整显示器后(包括分辨率的调整)都记得提示用户需要重新校正。另外我那方法可能对打印机dc有实际用处,但也只是可能,具体我也没有研究过。呵呵
      

  5.   

    打印机我研究过了,呵呵,打印出来的刻度尺和实际的不一样。LQ1600K的驱动
    也就是说打印机打印出的1cm不是实际的1cm
      

  6.   

    我有一个新的想法:在VB中使用Me.ScaleX(1, vbPixels, vbMillimeters)可以算出vb假定的显示器点距为:0.2645836mm,那么只要知道了显示器的实际点距,比如我的三星19"的点距是0.294mm,通过两个点距的换算就可以显示出实际的尺寸了。
      

  7.   

    sequh(夏克) 说的对
    Line (10, 1)-(10, 10 / Me.ScaleX(1, vbPixels, vbMillimeters) + 1)
    好像就是1CM的线