请各位大侠帮忙!谢谢

解决方案 »

  1.   

    先draw出来,放到bmp上,再savetofile.搞定.
      

  2.   

    给你一段代码:注意把Image的Visable属性设置为:False
    procedure TMainFm.PrintClick(Sender: TObject);
    var
      bmp :TBitmap;
      ScaleX,ScaleY :Integer;
      R :TRect;
    begin
      bmp :=TBitmap.Create;
      bmp.PixelFormat:=pf4bit;
      bmp.Width :=PaintBox.Width;
      bmp.Height :=PaintBox.Height;
      BitBlt(bmp.Canvas.Handle,0,0,bmp.Width,bmp.Height,PaintBox.Canvas.Handle,0,0,SRCCOPY);
      Image.AutoSize :=True;
      Image.Picture.Bitmap.Assign(bmp);
      Image.Picture.SaveToFile('c:\a.bmp');
      bmp.Free;  if Printer.Printers.Count=0 then
      begin
        ShowMessage('请首先安装打印机');
        Exit;
      end;
      if  not PrintDialog.Execute then  Exit
      else
      begin
        with Printer do
        begin
          BeginDoc;
          ScaleX :=GetDeviceCaps(Handle,LogPixelsX) div PixelsPerInch;
          ScaleY :=GetDeviceCaps(Handle,LogPixelsY) div PixelsPerInch;
          R :=Rect(0,0,Image.Width*ScaleX,Image.Height*ScaleY);
          Canvas.StretchDraw(R,Image.Picture.Graphic);
          EndDoc;
        end;
      end;
    end;