基于Delphi的屏幕抓图技术的实现
(2)Delphi的第三方控件ScreenCapture,它是一个很好的免费的截图控件,可以轻松抓取任意大小(全屏当然行)、屏幕的任何位置,还可以设置所截图像的形状、以及用何种模式截图。下面介绍的是用TcmWindow模式截图,使用非常简单,使用效果可以与著名的抓图软件SnagIt32媲美。
procedure TForm1.BtnStartClick(Sender:TObject);
begin
ScreenCapture1.start; //开始截图
end;
//当截取屏幕成功时,此事件发生
procedure TForm1.ScreenCapture1Capture(Sender:TObject;Bitmap:TBitmap);
begin
//调整滚动窗口的大小以适应截获图像的大小
Scrollbox1.HorzScrollBar.Range:= Image1.width;
Scrollbox1.VertScrollBar.Range:= Image1.height;
end;
procedure TForm1.FormCreate(Sender:TObject);
begin
//载入entntacp.dll文件
BtnStart.enabled:= ScreenCapture1.dllavailable;
//显示版本信息
caption:= '屏幕抓图软件' + ScreenCapture1.version;
end;
//当没有足够的内存支持截取屏幕时,此事件发生
procedure TForm1.ScreenCapture1Error(Sender:TObject);
begin
MessageDlg('屏幕截取时发生一个错误!请关闭其他应用程序以获得更多内存资源.', mtError,[mbOK],0);
end;
//当用户按“Esc”键,即取消屏幕截取时,此事件发生
procedure TForm1.ScreenCapture1UserCancelled(Sender:TObject);
begin
MessageDlg('用户取消屏幕截取。',mtInformation,[mbOK],0);
end;
运行程序,效果如图1和图2所示。
结论
通过对以上两种程序代码的调试运行,使用第三方控件的方法更易于设计实现,文中的程序代码全部在Win2000和Delphi7.0环境下调试通过。