请问如何在一张A4纸上打印图片,我是这么写的
srect:=rect(0,0,image1.Picture.Width,image1.Picture.Height);
printer.Canvas.StretchDraw(srect,image1.picture.graphic);
可是打印出的图片很小,我想自己定义图片的宽和高,不知道怎么作
srect:=rect(0,0,image1.Picture.Width,image1.Picture.Height);
printer.Canvas.StretchDraw(srect,image1.picture.graphic);
可是打印出的图片很小,我想自己定义图片的宽和高,不知道怎么作
printer.Canvas.StretchDraw(image1.picture.graphic);
还是那么大,也就是图片的实际大小,800*600,但是我想打印整张纸,或者一张打几张
var
ScaleX,ScaleY:integer;
r1,r2:TRect;
begin
ScaleX := GetDeviceCaps(printer.Handle, logPixelsX) div PixelsPerInch;
ScaleY := GetDeviceCaps(printer.Handle, logPixelsY) div PixelsPerInch;
r1:= Rect(image1.Left*ScaleX, image1.Top*ScaleY, (image1.Left+Image1.Width)* ScaleX,(image1.Top+Image1.Height)* ScaleY);
r2:= Rect(image2.Left*ScaleX, image2.Top*ScaleY, (image2.Left+Image2.Width)* ScaleX,(image2.Top+Image2.Height)* ScaleY); with Printer do
try
BeginDoc;
Canvas.StretchDraw(r1,Image1.Picture.Graphic);
Canvas.StretchDraw(r2,Image2.Picture.Graphic);
finally
EndDoc;
end;
end;你也可以参考下面这个
http://expert.csdn.net/Expert/topic/1278/1278449.xml?temp=.5635034
下面这个是我看到的大富翁网站上的一个例子,我试了,好象不行,你参考一下
procedure TForm1.Button1Click(Sender: TObject);
var
bmp:tbitmap;
rect:trect;
X,Y:integer;
begin
bmp:=tbitmap.create;
bmp.LoadFromFile('writing.bmp');
//x,y为打印机每英寸的像素数
X := GetDeviceCaps(printer.Handle, logPixelsX);
Y := GetDeviceCaps(Handle, logPixelsY);
rect.left:=0;
rect.Top:=0;
//1英寸=2。54厘米
rect.Right:=trunc((bmp.Width*X)/2.54);
rect.bottom:=trunc(bmp.Height*y/2.54);
try
printer.begindoc;
printer.canvas.StretchDraw(rect,bmp);
printer.enddoc;
except
printer.abort;
raise;
end;
bmp.free;
end;