function GetPixelsPerInchX: Integer;
begin
Result := GetDeviceCaps(Printer.Handle, LOGPIXELSX)
end;
function GetPixelsPerInchY: Integer;
begin
Result := GetDeviceCaps(Printer.Handle, LOGPIXELSY)
end;
1厘米=100*GetPixelsPerInchY/25.4 像素 打印机的Y方向。
1厘米=100*GetPixelsPerInchX/25.4 像素 打印机的X方向。
-------------------------------------------------------------------------------------------------------------------------------------
给个我刚写的代码,打印机上调试通过,可以精确定位到毫米。
用offsetX,offsetY调整打印偏移量,单位为毫米。
procedure TForm1.Button1Click(Sender: TObject);
begin
memo1.Lines.Clear;
if PrinterSetupDialog1.Execute then
begin
prtX:=GetDeviceCaps(printer.Handle,LOGPIXELSX);
memo1.Lines.Add('打印机水平分辨率LOGPIXELSX='+inttostr(prtX));
prtY:=GetDeviceCaps(printer.Handle,LOGPIXELSY);
memo1.Lines.Add('打印机垂直分辨率LOGPIXELSY='+