C#利用Windows自帶gdi32.dll實(shí)現(xiàn)抓取屏幕功能實(shí)例
本文實(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片的長(zhǎng)和寬有可能超過(guò)目前屏幕的大小 //創(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文件格式來(lái)保存 //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ì)象的矩形的長(zhǎng)度 IntPtr hdcSrc, //源設(shè)備的句柄 int nXSrc, //源對(duì)象的左上角的X坐標(biāo) int nYSrc, //源對(duì)象的左上角的X坐標(biāo) System.Int32 dwRop //光柵的操作值 );
希望本文C#抓取屏幕實(shí)例對(duì)大家的C#程序設(shè)計(jì)有所幫助。
相關(guān)文章
重寫(xiě)、隱藏基類(lèi)(new, override)的方法
重寫(xiě)、隱藏基類(lèi)(new, override)的方法,需要的朋友可以參考一下2013-03-03C#中的lock、Monitor、Mutex學(xué)習(xí)筆記
這篇文章主要介紹了C#中的lock、Monitor、Mutex學(xué)習(xí)筆記,本文講解的都是線程同步的一些知識(shí),需要的朋友可以參考下2015-01-01簡(jiǎn)單掌握Windows中C#啟動(dòng)外部程序進(jìn)程的方法
這篇文章主要介紹了Windows中C#啟動(dòng)外部程序進(jìn)程的方法,例子中同時(shí)包括了進(jìn)程關(guān)閉的方法,需要的朋友可以參考下2016-03-03解析如何使用反射調(diào)用類(lèi)型成員 方法,字段,屬性
本篇文章是對(duì)使用反射調(diào)用類(lèi)型成員 方法,字段,屬性進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06