1. 程式人生 > >實現 C# Winform截圖

實現 C# Winform截圖

using System.Runtime.InteropServices;
using System.Drawing.Imaging;

    [System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")]
    private static extern bool BitBlt(

                    IntPtr hdcDest,   //   目標   DC的控制代碼  
                    int nXDest,
                    int nYDest,
                    int nWidth,
                    int nHeight,
                    IntPtr hdcSrc,     //   源DC的控制代碼  
                    int nXSrc,
                    int nYSrc,
                    System.Int32 dwRop     //   光柵的處理數值  
                      ); 

  private   void   button1_Click(object   sender,   System.EventArgs   e)  
  {  
  //獲得當前螢幕的大小  
  Rectangle   rect   =   new   Rectangle   (   )   ;  
  rect   =   Screen.GetWorkingArea   (   this   )   ;  
  //建立一個以當前螢幕為模板的圖象  
  Graphics   g1   =   this.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檔案格式來儲存  
  MyImage.Save   (   @"c:/Capture.jpg"   ,   ImageFormat.Jpeg   );  
  MessageBox.Show   (   "當前螢幕已經儲存為C盤的capture.jpg檔案!"   )   ;  
  }  

原帖:http://topic.csdn.net/t/20051009/10/4313747.html

在網上無意中找到了這個,貼到這裡,給大家分享一下..............

功能還是不夠完善,圖片有點模糊,因為現在沒涉及到這個,沒有去修改.......可以做下參考資料