鼠标的移动单位是以什么来算的?(60分)

  • 主题发起人 主题发起人 zhangkan
  • 开始时间 开始时间
Z

zhangkan

Unregistered / Unconfirmed
GUEST, unregistred user!
请问鼠标的移动单位是以什么来算的。比如,我移动一个鼠标,我求的是MOUSEHOOKSTRUCT中
pt的x,y值。发现每移动一下,都是成千上万。
另外,鼠标移动后,我要算移动前所在点与现在所在点的直线距离应该怎样算?谢谢大家!
 
当然是像素了。
pix
可以对其重新设置。更改坐标环境。
 
直线距离? 钩股定理。
 
把像素转换成英寸,然后就可以计算长度了,看Api说明
 
大侠们,我就是忘了勾股定理啦,你们能不能将公式写出来,说详细点点。另外,请问怎样
重新设置,改变环境?
 
哦,想起来啦。勾三股四弦五,55,我干脆回去读初中算啦。但像素跟厘米的比率是多少呢?
 
是28.346嗎﹐呵呵﹐我打開Photoshop看的換算率。
 
没有这么夸张吧,
0 <= pt.x <= Screen.Width
0 <= pt.y <= Screen.Height
另像素跟厘米没固定比例。
同一显示器可显示不同分辨率的桌面。
640x480,800x600,1024x768,1280x1024...
但英寸和厘米有固定比例。
用SystemParametersInfo得到屏幕分辨率为96dpi
这个值是不准确的:(
 
Reboot,请问用SystemParametersInfo就能得出当前屏幕的象素比吗?你说不准确是什么
意思?能说详细一点吗?比如我的是800*600﹐而假如我又换成1024x768,又应该怎样换算
呢?谢谢!
 
procedure TForm1.Button1Click(Sender: TObject);
var
hdc: Integer;
begin
hdc := GetDC(0);
ShowMessage(IntToStr(GetDeviceCaps(hdc,LOGPIXELSX)));
ReleaseDC(0,hdc);//Sorry,不是SystemParametersInfo:(
end;
上面代码可得到桌面的DPI。一般是96dpi或120dpi...
而不管你桌面的分辨率。固这个值对你的程序意义不大。
你的程序要考虑显示器的大小:14吋,15吋,17吋,21吋...
还要考虑桌面的分辨率:640x480,800x600,1024x768...
还要考虑用户是否调啦显示器。
有些变态将显示区调得很窄,很扁...
 
怎么我将分辨率调成640*480,800*600,1024x768得到的DPI都是96呢?我干脆将鼠标值除
96有没有问题呢?
 
多人接受答案了。
 
后退
顶部