我正在绘制文本(textOut)和我的窗口上的矩形... 我想从中获取RGB缓冲区... 我该怎么做?如何从窗口获取像素数据像素缓冲区并提取RGB?
1
A
回答
2
有2个选项:
首先,您可以使用GetPixel()。我用了很多。它工作正常:
COLORREF GetPixel(
HDC hdc,
int nXPos,
int nYPos
);
随着我们的日处理器使用此功能甚至使用rect可能在某些情况下工作。
其次,您可以将屏幕内容复制到位图中。在此之后,你可以将它放在剪贴板中,与您的代码工艺等核心功能有:
BOOL BitBlt(
_In_ HDC hdcDest,
_In_ int nXDest,
_In_ int nYDest,
_In_ int nWidth,
_In_ int nHeight,
_In_ HDC hdcSrc,
_In_ int nXSrc,
_In_ int nYSrc,
_In_ DWORD dwRop
);
如果需要我可以发布更详细的片断。
// Pick up the DC.
HDC hDC = ::GetDC(m_control);
// Pick up the second DC.
HDC hDCMem = ::CreateCompatibleDC(hDC);
// Create the in memory bitmap.
HBITMAP hBitmap = ::CreateCompatibleBitmap(hDC, bmp_size_x, bmp_size_y);
// Put bitmat into the memory DC. This will make it functional.
HBITMAP hBmpOld = (HBITMAP)::SelectObject(hDCMem, hBitmap);
// Clear the background.
HBRUSH hBkgr = ::CreateSolidBrush(props.bkgr_brush);
RECT bitmap_rect = { 0, 0, bmp_size_x, bmp_size_y };
::FillRect(hDCMem, &bitmap_rect, hBkgr);
::DeleteObject(hBkgr);
// Do the job.
::BitBlt(hDCMem, margins_rect.left, margins_rect.top,
size_to_copy_x, size_to_copy_y, hDC,
screen_from_x, screen_from_y, SRCCOPY);
相关问题
- 1. 提取脏rents RGB像素缓冲区数据DirectX
- 2. 从CGImage获取RGB像素数据
- 3. WebGL - 从渲染缓冲区中读取像素数据
- 4. 从像素获取RGB值并将rgb值设置回同一像素
- 5. 从鼠标的缓冲图像中获取像素RGB X和Y的位置
- 6. 从uint8获取RGB像素值C++
- 7. 如何RGB像素缓冲区转换为IRandomAccessStream^
- 8. 抓取窗口的像素数据
- 9. 使用像素缓冲区对象异步读取数据gpu
- 10. 在C++中用聚焦窗口获取像素RGB颜色
- 11. 裁剪像素缓冲区
- 12. 从PythonMagick图像获取像素数据?
- 13. 如何将从缓冲器获取的像素数据绘制回自己?
- 14. 如何获得窗口客户区域的每个像素的RGB值数组
- 15. 如何从TK窗口获取x11缓冲区?
- 16. 如何从像素顶部获取窗口位置
- 17. 如何使用Direct2D从窗口获取像素
- 18. 使用PIL获取像素的RGB
- 19. 如何获取imageView的像素数据?
- 20. 如何通过C++获取图像的所有像素数据(RGB)
- 21. 如何从CGImageRef对象获取像素的RGB值?
- 22. AVPlayerLayer获取图像到UIImageView缓冲区
- 23. 从hdc获取像素数据
- 24. 从Kinetic JS Image获取像素数据
- 25. 从BufferedImage获取像素数据
- 26. 如何从图像中获取像素数据使用R
- 27. scanf并获取缓冲区
- 28. 我如何从CollectionFS获取文件(图像)的缓冲区
- 29. 如何从ImageMagick获取c缓冲区图像
- 30. 从System.Drawing.Bitmap中提取像素
什么环境? –