C#利用Windows自带gdi32.dll实现抓取屏幕功能实例
本文实例讲述了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#程序设计有所帮助。