用WindowsAPI截圖並轉換為RGB格式

2021-07-02 13:11:05 字數 787 閱讀 7293

在windows下捕獲螢幕影象可以有多重方法,比較簡單可以呼叫第三方庫,如qt的螢幕截圖api就很容易呼叫。

在這裡介紹如何用windows api實現截圖並轉換成rgb格式儲存。

#include //最終f的記憶體布局為bgra格式,需要保證buf長度足夠(>w*h*4)

void screencap(void* buf, int* w, int* h)

; bmi.bisize = sizeof(bitmapinfoheader);

bmi.biplanes = 1;

bmi.bibitcount = 32;

bmi.biwidth = width;

bmi.biheight = -height;

bmi.bicompression = bi_rgb;

bmi.bisizeimage = width*height;

selectobject(hdcmem, hbitmap);

bitblt(hdcmem, 0, 0, width, height, hscreen, 0, 0, srccopy);

getdibits(hdcmem, hbitmap, 0, height, buf, (bitmapinfo*)&bmi, dib_rgb_colors);

deletedc(hdcmem);

releasedc(hdesk, hscreen);

closewindow(hdesk);

deleteobject(hbitmap);

}

VB用API模擬截圖鍵PrintScreen

很多人用 sendkeys 模擬截圖鍵 printscreen 的時候提示 錯誤 70 拒絕的許可權 於是經常遇到人問.乾脆寫下來 宣告private declare sub keybd event lib user32 alias keybd event byval bvk as byte,byv...

Mac系統截圖

command shift 3 對整個螢幕截圖,會儲存的乙個檔案中 預設儲存的桌面上 command ctrl shift 3 對整個螢幕截圖,被儲存到剪貼簿 夾紙板 中。command shift 4 對選定區域進行截圖,並將儲存到檔案中 預設儲存的桌面上 在觸發這個快捷鍵後,按空格 space ...

Android截圖分享

android截圖並進行分享應該是乙個比較好用的功能,可惜在應用中見的不多 1.截圖 準備截圖 public void prepareshoot imgpath rootpath if imgpathfile.equals imgpath colorgoshareimga.png else else...