数码资源网·下载

展开

通过Delphi的屏幕抓图功能是怎么实现

作者:网友整理
抓图手机软件v1.5.3

抓图手机软件v1.5.3 37.30M / 简体中文

点击下载
抓图手机版(电商图片抓取软件) v1.3.0 安卓版

抓图手机版(电商图片抓取软件) v1.3.0 安卓版 25.16M / 简体中文

点击下载
抓图猫去水印appv1.0.0

抓图猫去水印appv1.0.0 59.68M / 简体中文

点击下载

通过Delphi的屏幕抓图功能是怎么实现的?随着网络技术的飞速发展,计算机网络在各高等院校教学中的使用已非常普遍,下面小编我就来为您讲一讲通过Delphi的屏幕抓图功能是怎么实现的吧!设计一款网络监控软件,监控学生计算机,十分必要。

通过Delphi的屏幕抓图功能是怎么实现

通过Delphi的屏幕抓图功能是怎么实现

此系统应具有以下功能:

(1)教师用机可以循环显示学生计算机的显示器上的画面。

(2)教师用机可以动态显示某一学生计算机的显示器上的画面。

(3)教师用机可以对学生用计算机发出警告信息和控制信息。

(4)学生用计算机开机自动运行服务端监控程序。

(5)为了防止学生用计算机的服务端监控程序,被学生发现用Ctrl+Alt+Del关闭,在Ctrl+Alt+Del对话框中必须隐藏程序。同时,应该隐藏程序在任务栏的按钮。

本文结合应用实践,重点向大家介绍在Delphi7.0中可以采用的两种实现屏幕抓图技术的操作方法。

程序实现

(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;

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所示。

delphi屏幕抓图效果

图1运行效果图

实现抓图后的效果图

图2抓取图像后的效果图

结论

通过对以上两种程序代码的调试运行,使用第三方控件的方法更易于设计实现,文中的程序代码全部在Win2000和Delphi7.0环境下调试通过。

软件特别说明:其实在delphi下载专题你能找到很多适合你的软件!

加载全部内容

相关文章
相关专题