如下是一个实现截屏功能的代码。我需要在此基础上获得位图每一个像素点的RGB值。请问该如何做呢?菜鸟一只,向大家请教!
HBITMAP GetSrcBit(DWORD BitWidth,DWORD BitHeight)
{
HDC hdcmy,hbufferdc;
HBITMAP hNewBitmap, hOldBitmap; hdcmy = CreateDC("DISPLAY",NULL,NULL,NULL);
hbufferdc = CreateCompatibleDC(hdcmy); hNewBitmap = CreateCompatibleBitmap(hdcmy, BitWidth, BitHeight); hOldBitmap = (HBITMAP)SelectObject(hbufferdc, hNewBitmap);
StretchBlt(hbufferdc, 0, 0, BitWidth, BitHeight,
hdcmy, 0, 0,SysWidth,SysHeight, SRCCOPY); hNewBitmap = (HBITMAP)SelectObject(hbufferdc, hOldBitmap);
DeleteObject(hOldBitmap);
ReleaseDC(NULL,hdcmy);
ReleaseDC(NULL,hbufferdc); return hNewBitmap;
}
HBITMAP GetSrcBit(DWORD BitWidth,DWORD BitHeight)
{
HDC hdcmy,hbufferdc;
HBITMAP hNewBitmap, hOldBitmap; hdcmy = CreateDC("DISPLAY",NULL,NULL,NULL);
hbufferdc = CreateCompatibleDC(hdcmy); hNewBitmap = CreateCompatibleBitmap(hdcmy, BitWidth, BitHeight); hOldBitmap = (HBITMAP)SelectObject(hbufferdc, hNewBitmap);
StretchBlt(hbufferdc, 0, 0, BitWidth, BitHeight,
hdcmy, 0, 0,SysWidth,SysHeight, SRCCOPY); hNewBitmap = (HBITMAP)SelectObject(hbufferdc, hOldBitmap);
DeleteObject(hOldBitmap);
ReleaseDC(NULL,hdcmy);
ReleaseDC(NULL,hbufferdc); return hNewBitmap;
}
函数原型
int GetDIBits(HDC hdc, HBITMAP hbmp, UINT uStartScan, UINT cScanLines, LPVOID lpvBits, LPBITMAPINFO lpbi, UINT uUsage);
CImage::GetPixel
这个函数。你也可以自己探索哦~