无论你如何操作Canvas你都要用到它的座标系,将座标系放缩一下即可.
以下方案以0.1mm为单位而不是cm
1.取缩放比例:
function LogRateX: Integer;
begin
Result := GetDeviceCaps(Printer.Handle, LOGPIXELSX) * 1000 div 254;
end;
function LogRateY: Integer;
begin
Result := GetDeviceCaps(Printer.Handle, LOGPIXELSY) * 1000 div 254;
end;
加1000的倍率是为了保证精度而避免浮点运算,引用时须除1000
2.建立座标换算函数:
function PixelX(X: Integer): Integer;
begin
Result := X * LogRateX div 1000;
end;
function PixelY(Y: Integer): Integer;
begin
Result := Y * LogRateY div 1000;
end;
function PixelPoint(OldPoint: TPoint): TPoint;
begin
Result := Point(PixelX(OldPoint.X),PixelY(OldPoint.Y));
end;
3.使用注意:为避免频繁调用API函数,最好将LogRateX和LogRateY
保存起来,重置打印机时则重新计算;