如何打印大图片 ( 积分: 100 )

  • 主题发起人 主题发起人 davidjava
  • 开始时间 开始时间
D

davidjava

Unregistered / Unconfirmed
GUEST, unregistred user!
用Sin函数生成一个宽度比较长的图片,请问如何把它用A4纸打印出来
 
用Sin函数生成一个宽度比较长的图片,请问如何把它用A4纸打印出来
 
1、在FastReport里面放一个图形的项,比如就叫Picture1吧,调整各种属性,包括缩放等等

然后在程序里面,好像是OnBeforePrint
TfrPictureView(frReport1.FindObject('Picture1')).Picture.Assign(Image1.Picture)
frReport1.ShowReport
2、用Printer本身的方法,关键是1个地方,就是映射好的图片到打印机Canvas的比例位置,下面是我转的例子,蓝色部分是重要地方

http://www.delphibbs.com/delphibbs/modifyl.asp?lid=2007274

procedure Tsjlr.BitBtn1Click(Sender: TObject);
var
Rect:TRect;
strect:Trect; //定义打印输出矩形框的大小
temhi,temwd:integer;
printer:TPrinter;
begin
if printdialog1.execute then begin
temhi:=image1.picture.height;
temwd:=image1.picture.width;
while (temhi printer.pageheight div 2) and (temwd printer.pagewidth div 2) do
//将图形放大到打印页面的1/2大小
begin
temhi:=temhi+temhi;
temwd:=temwd+temwd;
end;
with strect do //定义图形在页面上的中心位置输出
begin
left:=(printer.pagewidth -temwd) div 2;
top:=(printer.pageheight-temhi) div 2;
right:=left+temwd;
bottom:=top+temhi;
end;
with printer do
begin
[blue]begindoc;
canvas.stretchdraw(strect,image1.picture.graphic); //将放大的图形向打印机输出
enddoc;[/blue]
end;
end;
end

至于纸张可以先通过打印设置那个对话框控件选择
 
谢谢,我试试看
 

Similar threads

D
回复
0
查看
767
DelphiTeacher的专栏
D
D
回复
0
查看
739
DelphiTeacher的专栏
D
D
回复
0
查看
691
DelphiTeacher的专栏
D
后退
顶部