0

我正在尝试一些代码在 Windows 上使用 getPixel 捕获部分屏幕,设备上下文为空(捕获屏幕而不是窗口),但它真的很慢。貌似GetDIBits()可以很快,但是好像有点复杂……不知道有没有库可以把整个区域放到一个数组中,pixel[x][y]会返回24位颜色像素代码?

或者 Mac 上是否存在这样的库?或者,如果 Ruby 或 Python 已经有这样的库可以做到这一点?

4

1 回答 1

3

我从来没有这样做过,但我会尝试:

  1. 使用 CreateCompatibleDC 创建一个内存设备上下文 (DC),并将其传递给桌面的设备上下文 (GetDC(NULL))。

  2. 创建与您捕获的区域大小相同的位图(使用 CreateCompatibleBitmap)。

  3. 将位图选择到您创建的 DC 中(使用 SelectObject)。

  4. 从桌面 DC 到您创建的 DC 执行 BitBlt(使用 SRCCOPY 标志)。

如果您以错误的顺序执行操作,使用设备上下文可能会导致 GDI 泄漏,因此请确保您阅读了有关您使用的所有 GDI 函数(例如 SelectObject、GetDC 等)的文档。

于 2009-06-05T16:07:50.387 回答