如下是一个实现截屏功能的代码。我需要在此基础上获得位图每一个像素点的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;
}

解决方案 »

  1.   

    GetDIBits
    函数原型
    int GetDIBits(HDC hdc, HBITMAP hbmp, UINT uStartScan, UINT cScanLines, LPVOID lpvBits, LPBITMAPINFO lpbi, UINT uUsage);
      

  2.   

    先构造一个CImage对象,再用
    CImage::GetPixel
      

  3.   

    我有具体代码,但是我回复别人的时候,别人不加分也不结贴...我这个函数只需要你提供个全局二维数组变量,就能保存进去。想要的话回复我。具体的做法是改写的bool CScreenImageDlg::SaveBitmapToFile(HBITMAP hBitmap, CString FileName)
    这个函数。你也可以自己探索哦~