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)和寬有可能超過目前屏幕的大小
//創(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ì)象的矩形的長(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)文章
C#實(shí)現(xiàn)百度網(wǎng)站收錄和排名查詢功能思路及實(shí)例
這篇文章主要介紹了C#實(shí)現(xiàn)百度網(wǎng)站收錄和排名查詢功能思路及實(shí)例,本文思路同樣適用必應(yīng)、搜狗、搜搜、360等搜索引擎,需要的朋友可以參考下2015-01-01
關(guān)于C# 5.0 CallerMemberName CallerFilePath CallerLineNumber 在.
本篇文章,小編為大家介紹關(guān)于C# 5.0 CallerMemberName CallerFilePath CallerLineNumber 在.NET4中的使用介紹方法,有需要的朋友可以參考一下2013-04-04
C#中==(雙等于號(hào))與equals()區(qū)別詳解
這兩種方式也是大家在日常編碼工作當(dāng)中用的比較多的判斷方式,本文就詳細(xì)的介紹一下C# 雙等于號(hào)與equals()區(qū)別,方便大家理解2021-05-05
總結(jié)C#刪除字符串?dāng)?shù)組中空字符串的幾種方法
C#中要如何才能刪除一個(gè)字符串?dāng)?shù)組中的空字符串呢?下面的文章會(huì)介紹多種方式來實(shí)現(xiàn)清除數(shù)組中的空字符串,以及在.net中將字符串?dāng)?shù)組中字符串為空的元素去除。2016-08-08
基于C# wpf 實(shí)現(xiàn)Grid內(nèi)控件拖動(dòng)詳情
這篇文章主要介紹了基于C# wpf 實(shí)現(xiàn)Grid內(nèi)控件拖動(dòng),有一些業(yè)務(wù)場(chǎng)景中我們需要拖動(dòng)控件,在Grid中就可以實(shí)現(xiàn)控件拖動(dòng),通過設(shè)置Margin屬性即可,下面文章我們來看看具體的實(shí)現(xiàn)內(nèi)容2021-11-11

