C#利用Windows自帶gdi32.dll實現(xiàn)抓取屏幕功能實例
更新時間:2014年08月25日 15:55:26 投稿:shichen2014
這篇文章主要介紹了C#利用Windows自帶gdi32.dll實現(xiàn)抓取屏幕功能,是C#程序設(shè)計中常見的一個重要技巧,需要的朋友可以參考下
本文實例講述了C#利用Windows自帶gdi32.dll實現(xiàn)抓取屏幕功能,是C#應用程序設(shè)計中一個非常實用的功能,現(xiàn)分享給大家供大家參考借鑒。
具體功能代碼如下:
internal static void GetScreenShot( ) { //獲得當前屏幕的大小 Rectangle rect = new Rectangle(); rect = Screen.AllScreens[0].WorkingArea; //計算圖片的大小,因為圖片的長和寬有可能超過目前屏幕的大小 //創(chuàng)建一個以當前屏幕為模板的圖象 Control ctl = new Control(); Graphics g1 = ctl.CreateGraphics(); //創(chuàng)建以屏幕大小為標準的位圖 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(); //調(diào)用此API函數(shù),實現(xiàn)屏幕捕獲 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, //目標設(shè)備的句柄 int nXDest, //目標對象的左上角的X坐標 int nYDest, //目標對象的左上角的X坐標 int nWidth, //目標對象的矩形的寬度 int nHeight, //目標對象的矩形的長度 IntPtr hdcSrc, //源設(shè)備的句柄 int nXSrc, //源對象的左上角的X坐標 int nYSrc, //源對象的左上角的X坐標 System.Int32 dwRop //光柵的操作值 );
希望本文C#抓取屏幕實例對大家的C#程序設(shè)計有所幫助。