1. 程式人生 > >VC++擷取螢幕(截圖)並存為bmp圖片

VC++擷取螢幕(截圖)並存為bmp圖片

  主要程式碼是:

  ShowWindow(SW_HIDE);


  HDC myDC=::GetDC(0);
  int x=GetSystemMetrics(SM_CXSCREEN);
  int y=GetSystemMetrics(SM_CYSCREEN); 
  HDC hDCMemory   =   CreateCompatibleDC(myDC)  ;
  HBITMAP hBmp   =   CreateCompatibleBitmap(myDC,   x,  y)  ;  
  SelectObject(hDCMemory,   hBmp)   ;
  BitBlt(hDCMemory,   0,   0,   x,   y,   myDC,   0,   0,   SRCCOPY); 
  CImage image;
  image.Attach(hBmp);
  image.Save(TEXT("c:/my.bmp"));
  ::ReleaseDC(0,myDC);


  ShowWindow(SW_SHOW);

 CImage類概述

  CImage是MFC和ATL共享的新類,它能從外部磁碟中調入一個JPEG、GIF、BMP和PNG格式的影象檔案加以顯示,而且這些檔案格式可以相互轉換。由於CImage在不同的Windows作業系統中其某些效能是不一樣的,因此在使用時要特別注意。例如,CImage::PlgBlt和CImage::MaskBlt只能在 Windows NT 4.0 或更高版本中使用,但不能執行在Windows 95/98 應用程式中。CImage::AlphaBlend和CImage::TransparentBlt也只能在 Windows 2000/98或其更高版本中使用。即使在Windows 2000執行程式還必須將stdafx.h檔案中的WINVER和_WIN32_WINNT的預定義修改成0x0500才能正常使用。

  CImage封裝了DIB(裝置無關點陣圖)的功能,因而可以讓我們能夠處理每個點陣圖畫素。它具有下列最酷特性:

  1、AlphaBlend支援畫素級的顏色混合,從而實現透明和半透明的效果。

  2、PlgBlt能使一個矩形區域的點陣圖對映到一個平行四邊形區域中,而且還可能使用位遮蔽操作。

  3、TransparentBlt在目標區域中產生透明影象,SetTransparentColor用來設定某種顏色是透明色。

  4、MaskBlt在目標區域中產生源點陣圖與遮蔽點陣圖合成的效果。

  開啟應用程式的stdafx.h檔案新增CImage類的包含檔案:

#include <atlimage.h>