本文實(shí)例講述了C#利用Windows自帶gdi32.dll實(shí)現(xiàn)抓取屏幕功能,是C#應(yīng)用程序設(shè)計(jì)中一個(gè)非常實(shí)用的功能,現(xiàn)分享給大家供大家參考借鑒。
具體功能代碼如下:
internal static void GetScreenShot( ){ //獲得當(dāng)前屏幕的大小 Rectangle rect = new Rectangle(); rect = Screen.AllScreens[0].WorkingArea; //計(jì)算圖片的大小,因?yàn)閳D片的長和寬有可能超過目前屏幕的大小 //創(chuàng)建一個(gè)以當(dāng)前屏幕為模板的圖象 Control ctl = new Control(); Graphics g1 = ctl.CreateGraphics(); //創(chuàng)建以屏幕大小為標(biāo)準(zhǔn)的位圖 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ù),實(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, //目標(biāo)設(shè)備的句柄 int nXDest, //目標(biāo)對(duì)象的左上角的X坐標(biāo) int nYDest, //目標(biāo)對(duì)象的左上角的X坐標(biāo) int nWidth, //目標(biāo)對(duì)象的矩形的寬度 int nHeight, //目標(biāo)對(duì)象的矩形的長度 IntPtr hdcSrc, //源設(shè)備的句柄 int nXSrc, //源對(duì)象的左上角的X坐標(biāo) int nYSrc, //源對(duì)象的左上角的X坐標(biāo) System.Int32 dwRop //光柵的操作值);希望本文C#抓取屏幕實(shí)例對(duì)大家的C#程序設(shè)計(jì)有所幫助。
新聞熱點(diǎn)
疑難解答
圖片精選