Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
在此中得到屏幕的两个点坐标X1、Y1及X2、Y2,通过这两个点算出这两点的距离S=((X2-X1)^2+(Y2-Y1)^2)^0.5,如何把这个距离换算成厘米呢?谢谢

解决方案 »

  1.   

    知道设备的真实dpi(每英寸像素值)问题就好解决了,不过Windows好像不太关心关心这个东西(其实是没法关心,比如投影设备的),就算固定大小的显示器,计算的方法也要受到点阵排列方式的影响,无法精确计算,所以你的想法有点困难;
      

  2.   

    不好意思,请问这换算出的距离是什么距离?
    比如说我通过两个点坐标X1、Y1及X2、Y2算出来这两点的距离是20厘米。那这个20厘米是尺子在屏幕上量出的距离,亦或是打印机在纸上打印出来,然后用尺子量出的距离?谢谢
      

  3.   

    我一直都想知道像素和实际单位(cm,mm)之类的之间的转化。
      

  4.   

    在 Windows 的 desktop 上,识别鼠标坐标的单位是 pixel。这个东西和显示器的真实显示单元未必有对等的关系,特别是对于液晶显示器。不同的显示器,这个 pixel 的尺寸是有差别的。至于打印,还要看 desktop 与打印图像之间的映射关系,应该是与打印机机器设置相关。对于固定的显示器、打印机,以及固定的设置,可以通过测算得到换算关系。
      

  5.   

    如8楼所说,windows并不关心显示设备的实际尺寸有多大,只关心设备能提供多少个点(像素),至于这个点有多大,就要看厂家的做法和实际使用环境(如改变投影机与屏幕的距离,像素的大小就会变化),就算是打印机,windows也不会对大小作出规定,比如windows告诉打印机画1cm的线段,但实际画多长是由打印机决定的,windows控制不了;
    因此要实现像素和实际单位(cm,mm)之类的之间的转化,只能是针对特有的设备和特有环境,通过实际测量得到换算关系