黑猫同志请进,printer.Canvas 问题, (100分)

  • 主题发起人 主题发起人 sfei222
  • 开始时间 开始时间
S

sfei222

Unregistered / Unconfirmed
GUEST, unregistred user!
function TFgzf.piont1(x: real): real;
var Pointx, Pointy :integer;
begin
Pointx:=GetDeviceCaps(printer.Handle,LOGPIXELSX);
result:=trunc(x*0.3937*Pointx+0.5);
end;
function TFgzf.piont2(y: real): real;
var Pointy :integer;
begin
Pointy:=GetDeviceCaps(printer.Handle,LOGPIXELSY);
result:=trunc(y*0.3937*Pointy+0.5);
end;
procedure TFgzf.gfprint;
var s1,s2:integer;
begin
Printer.BeginDoc;
s1:=strtoint(floattostr(piont1(16.3)));
s2:=strtoint(floattostr(piont2(8.7)));
printer.Canvas.TextOut(s1,s2,edw.Text); //工作单位
Printer.EndDoc;
end;
上面的语句可以在16 k的纸上打印完整6个字,为什么我把s1改为下面的
s1:=strtoint(floattostr(piont1(20))),s2不变,就不能在纸上打印完整
只能打印一个字 ;遇到这种问题我想解决的办法有两个,一是把打印机的分辨率
提高,二是扩大纸的打印范围,但是不知道对不对?
 
x*0.3937的意思是将厘米转换为英寸
 
后退
顶部