如何打印一个PANEL中的内容呀?我只剩这点分了(30分)

  • 主题发起人 主题发起人 lifeis
  • 开始时间 开始时间
自己在打印机上画布上画线,再做套打吧。。。
 
请详细说明
 
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.begin
Doc;

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;

 

Panel.PaintTo( , , );
简单一些
 
gale老兄:
请详细说明参数的意义。
我是DELPHI新人
 
我要打印的不是PANEL本身,而是PANEL上的EDIT了,BUTTON了,
就是PANEL上的所有东西。请多指教,小弟在此拜谢了。
 
Panel.PaintTo( , , );
>>打印的是PANEL本身

BitBlt(WJBitMap.Canvas.Handle, 0, 0, SWidth, SHeight, WJDC, SLeft, STop, SRCCOPY);
>>是PANEL上的所有东西
 
panel1.Align := alClient;
form1.print;
 
后退
顶部