程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> c++ 截取屏幕圖片並保存

c++ 截取屏幕圖片並保存

編輯:C++入門知識

屏幕捕捉技術第一步就是抓取屏幕的桌面
雖然print screen鍵可以,但是在實際中就有點不適用了
下面的代碼可以拷貝到一個函數裡面,執行就可以生成一個獲取屏幕的bmp文件了
 
[cpp] 
//獲取桌面窗口的CDC 
CDC *pdeskdc = GetDesktopWindow()->GetDC();   
CRect re; 
//獲取窗口的大小 
GetDesktopWindow()->GetClientRect(&re); 
CBitmap bmp; 
bmp.CreateCompatibleBitmap(pdeskdc , re.Width() , re.Height()); 
//創建一個兼容的內存畫板 
CDC memorydc; 
memorydc.CreateCompatibleDC(pdeskdc); 
 
//選中畫筆 
CBitmap *pold = memorydc.SelectObject(&bmp); 
 
//繪制圖像 
memorydc.BitBlt(0,0,re.Width() ,re.Height(), pdeskdc , 0 ,0 ,SRCCOPY) ; 
 
//獲取鼠標位置,然後添加鼠標圖像 
CPoint po; 
GetCursorPos(&po); 
HICON hinco = (HICON)GetCursor(); 
memorydc.DrawIcon(po.x-10 , po.y - 10 , hinco); 
//選中原來的畫筆 
memorydc.SelectObject(pold); 
BITMAP bit; 
bmp.GetBitmap(&bit); 
/   DWORD size = bit.bmWidth * bit.bmHeight ; 
 
//定義 圖像大小(單位:byte) 
DWORD size = bit.bmWidthBytes * bit.bmHeight ; 
LPSTR lpdata = (LPSTR)GlobalAlloc(GPTR , size) ; 
 
//後面是創建一個bmp文件的必須文件頭,想要了解可以參考msdn 
 
BITMAPINFOHEADER pbitinfo; 
pbitinfo.biBitCount = 24 ;  
pbitinfo.biClrImportant = 0; 
pbitinfo.biCompression = BI_RGB ; 
pbitinfo.biHeight = bit.bmHeight ;  
pbitinfo.biPlanes = 1 ; 
pbitinfo.biSize = sizeof(BITMAPINFOHEADER); 
pbitinfo.biSizeImage =size; 
pbitinfo.biWidth = bit.bmWidth; 
pbitinfo.biXPelsPerMeter = 0; 
pbitinfo.biYPelsPerMeter = 0 ; 
 
GetDIBits(pdeskdc->m_hDC , bmp , 0 , pbitinfo.biHeight , lpdata ,  
    (BITMAPINFO*)&pbitinfo,DIB_RGB_COLORS); 
 
BITMAPFILEHEADER bfh; 
bfh.bfReserved1 = bfh.bfReserved2 = 0 ; 
bfh.bfType = ((WORD)('M'<< 8)|'B'); 
bfh.bfSize = 54 + size ;  
bfh.bfOffBits = 54 ; 
 
//寫入文件 
 
CFile file; 
if ( file.Open("1.bmp" , CFile::modeCreate|CFile::modeWrite) ) 

    file.WriteHuge( &bfh , sizeof(BITMAPFILEHEADER) ); 
    file.WriteHuge(&pbitinfo , sizeof(BITMAPINFOHEADER)); 
    file.WriteHuge(lpdata , size); 
    file.Close(); 

GlobalFree(lpdata); 

 
 
 
 
 
 
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved