1. 程式人生 > >C#利用Windows自帶gdi32.dll實現抓取屏幕功能實例

C#利用Windows自帶gdi32.dll實現抓取屏幕功能實例

like lba work 函數 dll img 模板 seh release

本文實例講述了C#利用Windows自帶gdi32.dll實現抓取屏幕功能,是C#應用程序設計中一個非常實用的功能,現分享給大家供大家參考借鑒。

具體功能代碼如下:

internal static void GetScreenShot( )
{
  //獲得當前屏幕的大小
  Rectangle rect = new Rectangle();
  rect = Screen.AllScreens[0].WorkingArea;
  //計算圖片的大小,因為圖片的長和寬有可能超過目前屏幕的大小
  //創建一個以當前屏幕為模板的圖象
  Control ctl = new Control();
  Graphics g1 = ctl.CreateGraphics();
  //創建以屏幕大小為標準的位圖
  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();
  //調用此API函數,實現屏幕捕獲
  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,  //目標設備的句柄
 int nXDest,    //目標對象的左上角的X坐標
 int nYDest,    //目標對象的左上角的X坐標
 int nWidth,    //目標對象的矩形的寬度
 int nHeight,    //目標對象的矩形的長度
 IntPtr hdcSrc,   //源設備的句柄
 int nXSrc,     //源對象的左上角的X坐標
 int nYSrc,     //源對象的左上角的X坐標
 System.Int32 dwRop //光柵的操作值
);

希望本文C#抓取屏幕實例對大家的C#程序設計有所幫助。

除聲明外,跑步客文章均為原創,轉載請以鏈接形式標明本文地址
C#利用Windows自帶gdi32.dll實現抓取屏幕功能實例

本文地址: http://www.paobuke.com/develop/c-develop/pbk23610.html






相關內容

技術分享淺談C# 類的繼承技術分享C#中數組、ArrayList和List三者的區別詳解技術分享C#設置軟件開機自動運行的方法(修改註冊表)技術分享winform簡單緩存類實例
技術分享ó?C#??í???±£′??áOracle BLOB×????Dμ?·?·¨技術分享C#操作windows註冊表的方法技術分享C#實現用於操作wav聲音文件的類實例技術分享
C#實現的優酷真實視頻地址解析功能(2014新算法)

C#利用Windows自帶gdi32.dll實現抓取屏幕功能實例