怎么样打印一个图像呢? ( 积分: 200 )

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

delhpi

Unregistered / Unconfirmed
GUEST, unregistred user!
真是菜,搞了半天都没有搞成。
假设是 EXE当前目录下 有个图像文件a.jpg,软件界面上 我用IMAGE 显示了。
现在想打印这个图像,打印大小和图片的原来尺寸一样。
 
uses printers

begin
printer.BeginDoc;
printer.Canvas.Draw(0,0,IMAGE1.Picture);
printer.EndDoc;
end;
 
2楼 的不行。

========
我的代码如下,打印后,打印机有反应,但没有图像打印出来,软件界面image1.图像也自动没有了。
图片本身不大。
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,printers, StdCtrls, jpeg, ExtCtrls;

type
TForm1 = class(TForm)
Image1: TImage;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
r:TRect;
begin
printer.BeginDoc;
r:=rect(0,0,300,300);
Printer.Canvas.StretchDraw(r,Image1.Picture.Bitmap);
printer.EndDoc;
end;

end.
 
printer.BeginDoc;
printer.Canvas.Draw(0,0,IMAGE1.Picture.Graphic);
printer.EndDoc;
对不起啊,刚才打错了
 
Printer.Canvas.StretchDraw(r,Image1.Picture.Graphic);
就好了。菜得真是晕死人。不要见笑。
 
还是谢谢2楼,虽然我一试就发现不行,还是大富翁的离线资料好,看了
李翔鹏 (2006-12-05 13:55:29)
procedure DrivePrint; var lines:integer; prntext:TextFile; //定义打印文本变量 spaceText:String; begin spaceText:=' '; assignprn(prntext); //将prntext文件分配给打印机 rewrite(prntext); //打开prntext文件 QueryForm.memo1.Font.Name:='新宋体-18030'; QueryForm.memo1.Font.Size:=9; printer.canvas.draw(170,0,queryForm.image1.picture.graphic); //调整图片位置 printer.canvas.font:=queryForm.memo1.font; //设置打印对象的canvas的字体 QueryForm.memo1.Lines.Insert(0,''); QueryForm.memo1.Lines.Insert(1,''); QueryForm.memo1.Lines.Insert(2,''); QueryForm.memo1.Lines.Insert(3,''); for lines:=0 to QueryFORM.memo1.lines.count-1 do writeln(prntext,spacetext+QueryForm.memo1.lines[lines]); //把Memo1的内容写到打印机对象 system.close(prntext); //关闭打印文件 end;

的扫盲帖子。

原来 要用 Image1.Picture.Graphic
 
又测试了一下,发现
如果源图片是JPG格式,那么一定要用
Printer.Canvas.StretchDraw(r,Image1.Picture.Graphic);

否则就出现 1楼的情况。
如果源图片是BMP格式,那么
Printer.Canvas.StretchDraw(r,Image1.Picture.Graphic);
或者
Printer.Canvas.StretchDraw(r,Image1.Picture.Bitmap);
都可以。

菜鸟就只能到这里了。问题总算解决了。哈哈,这算什么问题!
 
接受答案了.
 
后退
顶部