如何获取指定窗口的像素点?

尘埃黎明 2011-03-21 09:41:14
比如已知一个窗口的HWND,如何得到该窗口所有像素RGB的BUFFER?
我用下面这种方法,发现bitmap.bmbits的值为0,怎么回事?
HDC hdcScr = ::GetDC(m_hWnd);
HDC hdcMem = CreateCompatibleDC(hdcScr);
HBITMAP hBmp = CreateCompatibleBitmap(hdcScr, wid, hei);
SelectObject(hdcMem, hBmp);
BITMAP bitmap;
GetObject(hBmp, sizeof(BITMAP), &bitmap);
...全文
301 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
尘埃黎明 2011-03-21
  • 打赏
  • 举报
回复
用getpixel一个点一个点的获取确实可以,但是感觉程序有点卡
singwhatiwanna 2011-03-21
  • 打赏
  • 举报
回复
getpixel
尘埃黎明 2011-03-21
  • 打赏
  • 举报
回复
刚试了一下,这样bitmap的bmbits还是0
Eleven 2011-03-21
  • 打赏
  • 举报
回复
HDC hSrcDC = ::GetWindowDC(hWnd);   
ASSERT(hSrcDC);
HDC hMemDC = ::CreateCompatibleDC(hSrcDC);
ASSERT(hMemDC);
HBITMAP hBitmap = ::CreateCompatibleBitmap(hSrcDC, nWidht, nHeight);
ASSERT(hBitmap);
HBITMAP hOldBitmap = (HBITMAP)::SelectObject(hMemDC, hBitmap);
::BitBlt(hMemDC, 0, 0, nWidht, nHeight, hSrcDC, 0, 0, SRCCOPY);
BITMAP bitmap = {0};
::GetObject(hBitmap, sizeof(BITMAP), &bitmap);
http://blog.csdn.net/VisualEleven/archive/2011/02/23/6202796.aspx
wltg2001 2011-03-21
  • 打赏
  • 举报
回复
用GetDIBits试试
bishuiliuyun 2011-03-21
  • 打赏
  • 举报
回复
同意BeyondSky007的答案……

19,469

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧