直接访问GDI绘图上下文像素

4

我希望能够直接从/向绘图上下文中读写像素,即在窗口的绘制操作期间。

我知道 Windows GDI 中有 GetPixel/SetPixel 函数,但对于大规模操作来说,直接读写像素数据到内存中会更好。

如何使用标准 GDI 实现这一点?

2个回答

3

您可以创建一个与位图兼容的 DC:

HDC     hMemDC = CreateCompatibleDC(hdc);
HBITMAP hBmp   = CreateCompatibleBitmap(hdc, WIDTH, HEIGHT);
SelectObject(hMemDC, hBmp);

接下来,有一个GetDIBits函数可用于获取位:

int GetDIBits(
  _In_     HDC hdc,
  _In_     HBITMAP hbmp,
  _In_     UINT uStartScan,
  _In_     UINT cScanLines,
  _Out_    LPVOID lpvBits,
  _Inout_  LPBITMAPINFO lpbi,
  _In_     UINT uUsage
);

注意: 你可能需要将 lpvBits 设置为 NULL,通过 BITMAPINFO (lpbi 参数) 获取图像的尺寸和格式。



网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接