如何打印图形(100分)

  • 主题发起人 主题发起人 jony
  • 开始时间 开始时间
J

jony

Unregistered / Unconfirmed
GUEST, unregistred user!
我要在报表中打印上公司的徽标,但不知如何在指定的位置上打印这个图形,我尝试用
了以下语句,但无效,什么也打不出来
Printer.Canvas.stretchDraw(Canvas.ClipRect,Image1.Picture.Bitmap);
请教各位如何是好,谢谢!
jony
 
用qreport 中的dbimage
 
用printer.begin
doc;
print.canvas.strechdraw(........
printer.enddoc;
了吗??
 
用什么做的报表?
 
我是用printer命令直接写打印程序,不想用任何的报表控件
jony
 
with printer,canvasdo

begin

StretchDIbits(canvas.handle,round((printer.PageWidth-printwidth)/2),pageheight-leftspace,
printwidth,printheight
,0,0,dibwidth,dibheight,
image,info^,dib_rgb_colors,srccopy);
end;
 
Delphi文本和图形的打印方法


一、基本知识

1、在代码单元的Uses部分增加Printers,打印实际上是把要打印的内容画到tprinter的canvas画布上。

2、选择输出的打印机:printdialog1.execute

3、选择打印控制选项 printersetupdialog1.execute;


二、打印文本

//打印Memo1中的内容

procedure TForm1.BitBtn1Click(Sender: TObject);

var

lines:integer;

prntext:text;
定义打印文本变量

begin


if printdialog1.execute then


assignprn(prntext);
//将prntext文件分配给打印机

rewrite(prntext);
//打开prntext文件

printer.canvas.font:=memo1.font;
//设置打印对象的canvas的字体

for lines:=0 to memo1.lines.count-1do


writeln(prntext

memo1.lines[lines]);
//把Memo1的内容写到打印机对象

system.close(prntext);
//关闭打印文件

end;



三、打印图形

1、利用打印机的分辨率,图形将打印在页面的左上角,图形较小。

procedure TForm1.BitBtn1Click(Sender: TObject);

begin


if printdialog1.execute then


begin


printer.begin
doc;

printer.canvas.draw(0

0

image1.picture.graphic);

printer.enddoc;

end;


end;


2、利用打印机画布canvas的stretchdraw方法

可以对图形进行更为灵活的处理。

其中要用到一个代表图形输出区域的Rect参数

Trect的类型定义如下:

TRect = record

case Integer of

0: (Left

Top

Right

Bottom: Integer);

1: (TopLeft

BottomRight: TPoint);

end;

 


例:通过调整Rect的范围、图形大小及其在打印页面上的位置,实现图形打印:

procedure TForm1.Button1Click(Sender: TObject);

var strect:Trect;
//定义打印输出矩形框的大小

temhi

temwd:integer;

begin


if printdialog1.execute then


begin


temhi:=image1.picture.height;

temwd:=image1.picture.width;

while (temhi<printer.pageheight div 2) and //将图形放大到打印页面的1/2 (temwd<printer.pagewidth div 2)do
begin


temhi:=temhi+temhi;

temwd:=temwd+temwd;

end;


with strectdo
//定义图形在页面上的中心位置输出

begin


left:=(printer.pagewidth -temwd) div 2;

top:=(printer.pageheight-temhi) div 2;

right:=left+temwd;

bottom:=top+temhi;

end;


with Printerdo
begin


begin
doc;
//将放大的图形向打印机输出

canvas.stretchdraw(strect

image1.picture.graphic);

enddoc;

end;


end;


end;

 
后退
顶部