[问题] 抓取某个视窗的画面

楼主: 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