用Printer.Canver.TextOut(X,Y,字符)打印的距离的转换(38分)

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

springm

Unregistered / Unconfirmed
GUEST, unregistred user!
在Printer.Canver.TextOut(X,Y,字符);
中,X,Y是Integer,怎样转换为毫米?
打印机不同,怎样保持效果,如字体?
 
.........................等待
 
.................
 
好像不能更改其度量单位(打印机),

字体可以设置成通用的打印机字体。
 
我是想问textout的X,y与毫米的关系,是不是不同的打印机会不同?
打印字体一般printer.canvas.Font:=i;i 为integer,是不是不同分辨率的打印机
字体会打成不同大小
 
每个FORM上都有一个属性叫“PixelsPerInch”,记录着在本窗口内,
一英寸等于多少Pixels。
而1 inch 英寸=25.4 millimetres 毫米,所以换算关系就可以确定了。
 
谢谢 yck兄,我试试看:)
 
GetDeviceCaps函数
 
R_Baggio兄,GetDeviceCaps是获取打印机的分辨率,有没有
完整的过程进行处理,
 
看看帮助,有两个参数的,得到的结果是每厘米有多少象素
 
在打印机上画十毫米长的线段。

function GetXFactor: Extended;
begin

Result := Printer.PageWidth / GetDeviceCaps(Printer.Handle, HORZSIZE);
end;


function GetYFactor: Extended;
begin

Result := Printer.PageHeight / GetDeviceCaps(Printer.Handle, VERTSIZE);
end;


procedure TForm1.Button1Click(Sender: TObject);
begin

Printer.begin
Doc;
Printer.Canvas.MoveTo(Trunc(10 * GetXFactor), Trunc(10 * GetYFactor));
Printer.Canvas.LineTo(Trunc(20 * GetXFactor), Trunc(10 * GetYFactor));
Printer.EndDoc;
end;


 
谢谢Croco兄:),我去试试
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
后退
顶部