C#利用Windows自带gdi32.dll实现抓取屏幕功能实例
程序员文章站
2023-12-17 17:12:04
本文实例讲述了c#利用windows自带gdi32.dll实现抓取屏幕功能,是c#应用程序设计中一个非常实用的功能,现分享给大家供大家参考借鉴。
具体功能代码如下:...
本文实例讲述了c#利用windows自带gdi32.dll实现抓取屏幕功能,是c#应用程序设计中一个非常实用的功能,现分享给大家供大家参考借鉴。
具体功能代码如下:
internal static void getscreenshot( ) { //获得当前屏幕的大小 rectangle rect = new rectangle(); rect = screen.allscreens[0].workingarea; //计算图片的大小,因为图片的长和宽有可能超过目前屏幕的大小 //创建一个以当前屏幕为模板的图象 control ctl = new control(); graphics g1 = ctl.creategraphics(); //创建以屏幕大小为标准的位图 image myimage = new bitmap(rect.width ,rect .height, g1); graphics g2 = graphics.fromimage(myimage); //得到屏幕的dc intptr dc1 = g1.gethdc(); //得到bitmap的dc intptr dc2 = 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.getthumbnailimageabort mycallback = new image.getthumbnailimageabort(thumbnailcallback); //return myimage.getthumbnailimage(control.width, control.height, mycallback, intptr.zero); myimage.save("d:\\aa.jpg"); } [system.runtime.interopservices.dllimportattribute("gdi32.dll")] private static extern bool bitblt( intptr hdcdest, //目标设备的句柄 int nxdest, //目标对象的左上角的x坐标 int nydest, //目标对象的左上角的x坐标 int nwidth, //目标对象的矩形的宽度 int nheight, //目标对象的矩形的长度 intptr hdcsrc, //源设备的句柄 int nxsrc, //源对象的左上角的x坐标 int nysrc, //源对象的左上角的x坐标 system.int32 dwrop //光栅的操作值 );
希望本文c#抓取屏幕实例对大家的c#程序设计有所帮助。