TPrinter = class(TObject)
如何利用这个类实现一个既有文本又有图片的文档的打印?
没用过这个,但是听说功能很强大,有人给个例子吗?

解决方案 »

  1.   

    uses 
      printers; procedure DrawImage(Canvas: TCanvas; DestRect: TRect; ABitmap: TBitmap); 
    var 
      Header, Bits: Pointer; 
      HeaderSize: DWORD; 
      BitsSize: DWORD; 
    begin 
      GetDIBSizes(ABitmap.Handle, HeaderSize, BitsSize); 
      Header := AllocMem(HeaderSize); 
      Bits := AllocMem(BitsSize); 
      try 
        GetDIB(ABitmap.Handle, ABitmap.Palette, Header^, Bits^); 
        StretchDIBits(Canvas.Handle, DestRect.Left, DestRect.Top, 
          DestRect.Right, DestRect.Bottom, 
          0, 0, ABitmap.Width, ABitmap.Height, Bits, TBitmapInfo(Header^), 
          DIB_RGB_COLORS, SRCCOPY); 
      finally 
        FreeMem(Header, HeaderSize); 
        FreeMem(Bits, BitsSize); 
      end; 
    end; procedure PrintImage(Image: TImage; ZoomPercent: Integer); 
      // if ZoomPercent=100, Image will be printed across the whole page 
    var  
      relHeight, relWidth: integer; 
    begin 
      Screen.Cursor := crHourglass; 
      Printer.BeginDoc; 
      with Image.Picture.Bitmap do  
      begin 
        if ((Width / Height) > (Printer.PageWidth / Printer.PageHeight)) then 
        begin 
          // Stretch Bitmap to width of PrinterPage 
          relWidth := Printer.PageWidth; 
          relHeight := MulDiv(Height, Printer.PageWidth, Width); 
        end  
        else 
        begin 
          // Stretch Bitmap to height of PrinterPage 
          relWidth  := MulDiv(Width, Printer.PageHeight, Height); 
          relHeight := Printer.PageHeight; 
        end; 
        relWidth := Round(relWidth * ZoomPercent / 100); 
        relHeight := Round(relHeight * ZoomPercent / 100); 
        DrawImage(Printer.Canvas, Rect(0, 0, relWidth, relHeight), Image.Picture.Bitmap); 
      end; 
      Printer.EndDoc; 
      Screen.cursor := crDefault; 
    end; // Example Call: procedure TForm1.Button1Click(Sender: TObject); 
    begin 
      // Print image at 40% zoom: 
      PrintImage(Image1, 40); 
    end;
      

  2.   

    既有文本又有图片的文档,用word不更好嘛
      

  3.   

    aiirii(ari-爱的眼睛)  厉害厉害~~~~~~佩服佩服!
      

  4.   

    我是想看看利用TPrinter这个类怎么做。
    如果单纯是图方便我可以用很多方法实现打印图片和文字。