怎样将Form中的一个Panel保存为BMP文件?(50分)

  • 主题发起人 主题发起人 hingman
  • 开始时间 开始时间
H

hingman

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样将Form中的一个Panel保存为BMP文件?Panel上放有一些Label,要求一并保存为BMP文件。
 
截图! 最简单的办法
 
players,能否详细一点,最好用代码表示,谢谢。
 
用panel的"画布"特性来处理
 
Procedure TForm1.SaveScreen(FramePoint:TPoint;Filename:String);
//framepoint为panel的left和top
var
TempPoint:TPoint;
Dc: HDC;
begin
TempPoint.x:=FramePoint.x-2; //源设备场景
TempPoint.y:=FramePoint.y-2;
Bmp:= TBitMap.Create; //创建,设置其大小,目标设备场景
Dc:=GetDc(0);
bmp.Width:=panel1。width;//panel的宽度
bmp.Height:=panel1。height;//panel的长度
BitBlt(Bmp.Canvas.Handle,0,0,100,100,Dc,TempPoint.x,TempPoint.y,SRCCOPY);
Bmp.savetofile(filename);
ReleaseDc(0,Dc);
//释放DC资源
bmp.free;
end;
 
Bmp := TBitmap.Create; //创建一个BITMAP来存放图象
Bmp.Width := screen.width; //设置图片大小与屏幕在小一致
Bmp.Height := screen.Height;
DC := //这里就是PANEL的DC
Canvas := TCanvas.Create; //创建一个CANVAS对象
Canvas.Handle := DC; //把句柄指向屏幕
//把整个屏幕复制到BITMAP中
Bmp.Canvas.CopyRect(Rect (0, 0, screen.Width, screen.Height),
Canvas,
Rect (0, 0, Screen.Width, Screen.Height));
Canvas.Free; //释放CANVAS对象
ReleaseDC (0, DC); //释放DC

Image.picture.Bitmap:=Bmp; //拷贝下的图象赋给IMAGE对象
Image.Width:=Bmp.Width; //设置Image的大小对捕捉到的图片大小一致
Image.Height:=Bmp.Height;
Bmp.free;
 
to zhenghui:
FramePoint是什么东东?
 
to zhenghui:
我已用panel的left和top,图也截出来了,大小都对,但为什么内容不是不是Panel的实际内容呢?
 
搞定了,需要加入以下:
TempPoint:=ClientToScreen(TempPoint); //将屏幕上的坐标转换为屏幕的坐标。
 
已分配积分,谢谢。
 
后退
顶部