请问如何在一张A4纸上打印图片,我是这么写的
  srect:=rect(0,0,image1.Picture.Width,image1.Picture.Height);
  printer.Canvas.StretchDraw(srect,image1.picture.graphic);
可是打印出的图片很小,我想自己定义图片的宽和高,不知道怎么作

解决方案 »

  1.   

    改成
    printer.Canvas.StretchDraw(image1.picture.graphic);
    还是那么大,也就是图片的实际大小,800*600,但是我想打印整张纸,或者一张打几张
      

  2.   

    打印出的图片很小是因为打印机的分辨率和屏幕分辨率不一样。下面是我的一个例子,编的不好,一起学习。procedure TForm1.Button1Click(Sender: TObject);
    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;