在www.51delphi.com上有一个vcl控件有这个功能,我忘了名字,你找找吧,呵呵

解决方案 »

  1.   

    www.51delphi.com有个推荐度很高的vcl控件,就是打印界面功能的。我以前下载过,因为对我没什么用,就没有关注了,
      

  2.   

    procedure PrintPanel(Panel: TPanel; SLeft, STop, SWidth, SHeight, Left, Top: LongInt;
      HScale, ZScale: Real);
    var
      WJDC: HDC;
      WJBitMap: TBitMap;
      Info: PBitMapInfo;
      InfoSize, ImageSize: DWORD;
      Image: Pointer;
    begin
      Printer.BeginDoc;  WJBitMap := TBitMap.Create;
      WJBitMap.Width := SWidth;
      WJBitMap.Height := SHeight;  WJDC := GetDC(Panel.Handle);
      BitBlt(WJBitMap.Canvas.Handle, 0, 0, SWidth, SHeight, WJDC, SLeft, STop, SRCCOPY);
      ReleaseDC(Panel.Handle, WJDC);  GetDIBSizes(WJBitMap.Handle, InfoSize, ImageSize);
      GetMem(Info, InfoSize);
      GetMem(Image, ImageSize);
      GetDIB(WJBitMap.Handle, 0, Info^, Image^);  StretchDIBits(Printer.Canvas.Handle, Left, Top, Round((Panel.Width - 2) * HScale),
        Round((Panel.Height - 2) * ZScale), 0, 0, Info^.bmiHeader.biWidth,
        Info^.bmiHeader.biHeight, Image, Info^, DIB_RGB_COLORS, SRCCOPY);
      FreeMem(Image, ImageSize);
      FreeMem(Info, InfoSize);
      WJBitMap.Free;
      Printer.EndDoc;
    end;