如何能将一控件的face保存为一位图,不用截屏(100分)

  • 主题发起人 主题发起人 supxp
  • 开始时间 开始时间
控件.canvas.savetofile('a.bmp');
 
控件无canvas.savetofile方法怎么办?
 
取得控件Handle,再取得其DC,再Bitblt就可以了。
 
具体说说,有原码更好
 
procedure TForm1.Button1Click(Sender: TObject);
var
HH : THandle;

begin
HH := GetDC(Panel1.Handle);
Bitblt(Canvas.Handle,0,0,Panel1.Width,Panel1.Height,HH,0,0,SRCCOPY);
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
HH : THandle;
BMP : TBitmap;
begin
BMP := TBitmap.Create;
BMP.Width := Panel1.Width;
BMP.Height := Panel1.Height;
HH := GetDC(Panel1.Handle);
Bitblt(BMP.Canvas.Handle,0,0,Panel1.Width,Panel1.Height,HH,0,0,SRCCOPY);
Canvas.Draw(0,0,BMP);
ReleaseDC(Handle,HH);
end;
 
这仍是截屏,当此控件有滚动条或此控件一部分不在屏幕上时,得不到它的全貌.
谢谢!
 
这我就没办法了。呵呵,好象也不太可能,windows好象不能无偿给你太多。除非你做缓冲。
不过愿意关心。
 
有趣!这个能做,就可以实现HyperSnapDX的滚屏捕捉功能了,关注。。。
 
xp,还没搞定吗?
我来想三个办法:
1:找一块可以支持虚拟桌面的显卡,它可以显示很大的东东.
2:偷偷地把用户的显示器分辨率提高到时候1600X1200(小心!别怪我没
提醒你!),抓图.还原分辨率.
3:叫你的老板换一个29的显示器.
 
netmeeting通讯时,也是通过截屏显示对方电脑的桌面的吗?有没有
有不通过图像的传送而看到对方电脑的屏幕的?或者说比截屏速度更
快的:)
 
多人接受答案了。
 
后退
顶部