[問題] 抓取某個視窗的畫面

作者: wu110011 (不下棋)   2014-06-27 20:17:18
平台VC++ 2010 Win7 32bit
我想抓取某個視窗的畫面
在網路上看到這段程式說可以用
想問一下
1.為什麼它用的陣列大小是width*height*4(要乘以四呢?)
2.這樣抓到的bitmap位元數是16bit的嗎?
::GetWindowRect(hwndAbout,&aRect);
int width = aRect.bottom;
int height = aRect.right;
HDC hdc;
hdc=::GetDC(hwndAbout);
HDC memDC = ::CreateCompatibleDC (hdc);
HBITMAP bitmap = ::CreateCompatibleBitmap(hdc,width,height);
//copy
HGDIOBJ old = ::SelectObject (memDC, bitmap);
::BitBlt(memDC,0,0,width,height,hdc,0,0,SRCCOPY);
unsigned char *pixels = new unsigned char[width*height*4];
::GetBitmapBits(bitmap,width*height*4,pixels);
::SelectObject (memDC, old);
DeleteObject(bitmap);
DeleteDC(memDC);
DeleteDC(hdc);
作者: PUTOUCHANG (自己的廢文自己發)   2014-06-27 21:17:00
一個 pixel 用 4 bytes 存, 藍綠紅, 最後一個保留
作者: wu110011 (不下棋)   2014-06-28 09:15:00
不保留可以嗎?另外請問我要怎麼把抓到的bitmap直接SHOW出來看?
作者: Jockey66666 (往事已成追憶)   2014-06-28 09:57:00
StretchBlt
作者: Killercat (殺人貓™)   2014-06-28 17:53:00
4是為了alignment 他struct就是這樣湊的

Links booklink

Contact Us: admin [ a t ] ucptt.com