zl程序教程

您现在的位置是:首页 >  后端

当前栏目

C#利用Windows自带gdi32.dll实现抓取屏幕功能实例

c#Windows实例 实现 利用 功能 屏幕 自带
2023-06-13 09:15:44 时间

本文实例讲述了C#利用Windows自带gdi32.dll实现抓取屏幕功能,是C#应用程序设计中一个非常实用的功能,现分享给大家供大家参考借鉴。

具体功能代码如下:

internalstaticvoidGetScreenShot()
{
//获得当前屏幕的大小
Rectanglerect=newRectangle();
rect=Screen.AllScreens[0].WorkingArea;

//计算图片的大小,因为图片的长和宽有可能超过目前屏幕的大小
//创建一个以当前屏幕为模板的图象
Controlctl=newControl();
Graphicsg1=ctl.CreateGraphics();
//创建以屏幕大小为标准的位图
ImageMyImage=newBitmap(rect.Width,rect.Height,g1);

Graphicsg2=Graphics.FromImage(MyImage);
//得到屏幕的DC
IntPtrdc1=g1.GetHdc();
//得到Bitmap的DC
IntPtrdc2=g2.GetHdc();
//调用此API函数,实现屏幕捕获

BitBlt(dc2,0,0,rect.Width,rect.Height,dc1,0,0,13369376);
//释放掉屏幕的DC
g1.ReleaseHdc(dc1);
//释放掉Bitmap的DC
g2.ReleaseHdc(dc2);
//以JPG文件格式来保存
//Image.GetThumbnailImageAbortmyCallback=newImage.GetThumbnailImageAbort(ThumbnailCallback);
//returnMyImage.GetThumbnailImage(control.Width,control.Height,myCallback,IntPtr.Zero);
MyImage.Save("D:\\aa.jpg");

}
[System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")]
privatestaticexternboolBitBlt(
IntPtrhdcDest,//目标设备的句柄
intnXDest,//目标对象的左上角的X坐标
intnYDest,//目标对象的左上角的X坐标
intnWidth,//目标对象的矩形的宽度
intnHeight,//目标对象的矩形的长度
IntPtrhdcSrc,//源设备的句柄
intnXSrc,//源对象的左上角的X坐标
intnYSrc,//源对象的左上角的X坐标
System.Int32dwRop//光栅的操作值
);

希望本文C#抓取屏幕实例对大家的C#程序设计有所帮助。