如何把TImage里的东西输出到打印机???(100分)

  • 主题发起人 主题发起人 honestman
  • 开始时间 开始时间
H

honestman

Unregistered / Unconfirmed
GUEST, unregistred user!
我正在开发的一个软件,我已经在TImage中画了图,
for i:=r.Left to r.Rightdo

drawimage.Canvas.Pixels[i,r.top+round(rkuan/2)]:=clblack;
for i:=r.Top to r.Bottomdo

drawimage.Canvas.Pixels[r.Left+round(rchang/2),i]:=clblack;
drawimage.Canvas.TextOut(r.Left+round(rchang/2)+5,
r.top+round(rkuan/2+5*k),'O');
究竟如何把这个图用Printer在打印机输出啊???
我指的是把我在TImage画图的过程转移到对Printer操作,究竟有什么应该注意的???
 
用mw_print
 
首先放一个Printer控件,注意添加Printers单元。
var
ScaleX,ScaleY :Integer;
R :TRect;
begin

if Printer.Printers.Count=0 then

begin

ShowMessage('请首先安装打印机');
Exit;
//跳出N11Click
end;

if not PrintDialog.Execute then
Exit
else

begin

with Printerdo

begin

begin
Doc;
ScaleX :=GetDeviceCaps(Handle,LogPixelsX) div PixelsPerInch;
ScaleY :=GetDeviceCaps(Handle,LogPixelsY) div PixelsPerInch;
R :=Rect(0,0,MDIChildForm.MainImage.Width*ScaleX,MDIChildForm.MainImage.Height*ScaleY);
Canvas.StretchDraw(R,MDIChildForm.MainImage.Picture.Graphic);
EndDoc;
end;

end;

end;
 
to 卷起千堆雪tyn:
  你的方法的确可以打印,但是不知道为什么那个图不是正好落在我的A4纸的左上角,
占大概整个页的2/3左右。我已经试图调整上面的参数,但是好象没有效果啊?
为什么会这样?
 
把drawimage换成Printer即可
 
卷起千堆雪tyn的方法是对的,
关键在于你如何确定页边距。
调整打印时的传输矩形:
R :=Rect(0,0,MDIChildForm.MainImage.Width*ScaleX,MDIChildForm.MainImage.Height*ScaleY);
Canvas.StretchDraw(R,MDIChildForm.MainImage.Picture.Graphic);
中的R.比如:
OffsetRect(@R, margin * ScaleX, margin * ScaleY) 就可以了。

 
你用printer.canvas.StretchDraw试一试
 
多人接受答案了。
 
后退
顶部