基于Delphi的屏幕抓图技术的实现

程序实现

  (1)抓取屏幕图像的难点有两个:一是如何夺取屏幕的句柄,二是知道屏幕句柄后如何获取屏幕的图像。Borland公司的设计人员用画布(Tcanvas)对象封装了Windows的大部分图形输出功能,可以通过它以更直观的方式和Windows的屏幕打交道,而不必关心令人头疼的Windows API函数。具体程序如下:

procedure TForm1.Timer1Timer(Sender:TObject);//抓取屏幕,并保存到Image控件中
var
 Fullscreen:Tbitmap;
 FullscreenCanvas:TCanvas;
 dc:HDC;
begin
 Fullscreen:=TBitmap.Create;
 //创建一个BITMAP来存放图象
 Fullscreen.Width:=screen.width;
 Fullscreen.Height:=screen.Height;
 DC:=GetDC(0); //取得屏幕的DC,参数0指的是屏幕
 FullscreenCanvas:=TCanvas.Create;
 //创建一个CANVAS对象
 FullscreenCanvas.Handle:=DC;
 Fullscreen.Canvas.CopyRect(Rect(0,0,screen.Width,screen.Height),
 fullscreenCanvas,Rect(0,0,Screen.Width,Screen.Height));
 //把整个屏幕复制到BITMAP中
 FullscreenCanvas.Free;
 //释放CANVAS对象
 ReleaseDC(0,DC); //释放DC
 //*******************************
 image1.picture.Bitmap:=fullscreen; //拷贝下的图象赋给IMAGE对象
 image1.Width:=fullscreen.Width;
 image1.Height:=fullscreen.Height;
 fullscreen.free; //释放bitmap
 form1.WindowState:=wsNormal; //复原窗口状态
 form1.show; //显示窗口
 messagebeep(1); //BEEP叫一声,报告图象已经截取好了。
end;

 

未完,更详细:http://www.west263.com/info/html/chengxusheji/delphi/20080224/28865.html

posted @ 2014-05-22 11:03  stma  阅读(1545)  评论(0)    收藏  举报