水平方向:
mm:= Pixel / GetDeviceCaps(Canvas.Handle, LOGPIXELSX) * 25.4;
垂直方向:
mm:= Pixel / GetDeviceCaps(Canvas.Handle, LOGPIXELSY) * 25.4;
厘米数 = 像素数 / dpi * 2.54,
像素转化厘米对于显示器没意义,只有对打印机这类的输出设备才有意义。
600 dpi的打印机和1200dpi的打印机都打印一个1000像素的直线他们长度是不同的。
如果我想要把屏幕上点与点的距离转为厘米有什么好的方法呢!
回复人: ttxm(耳朵) ( ) 信誉:100 2002-12-27 18:03:00 得分:0
没有特别好的办法,思路同pazee(耙子)说的一样?
代码如下(是毫米):
function getmmScreen:TPoint;
var
p1:TPoint;
begin
p1.X:=GetDeviceCaps(frmSize.Canvas.Handle,HORZSIZE);
p1.Y:=GetDeviceCaps(frmSize.Canvas.Handle,VERTSIZE);
Result:=p1;
end;funCtion getPixelScreen:TPoint;
var
p1:TPoint;
begin
p1.X:=screen.Width;
p1.Y:=screen.Height;
result:=p1;
end;
procedure TfrmSize.mmToPix;
begin
mmTopixX:=getPixelScreen.X / getMMScreen.X ;
mmTopixY:=getPixelScreen.Y / getMMScreen.Y ;
end;