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>