有什么快速简便的方法来捕获屏幕的一部分吗?getPixel 很慢,而且 GetDIBits 作为开始似乎有点复杂

StackOverflow https://stackoverflow.com/questions/859181

我尝试使用一些代码在 Windows 上使用 getPixel 捕获部分屏幕,设备上下文为空(捕获屏幕而不是窗口),但速度非常慢。看起来 GetDIBits() 可以很快,但似乎有点复杂......我想知道是否有一个库可以将整个区域放入一个数组中,并且pixel[x][y]将返回像素的24位颜色代码?

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

有帮助吗?

解决方案

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

  1. 使用createCompatibledc传递桌面(getDC(null))的设备上下文创建存储设备上下文(DC)。

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

  3. 在您创建的直流(使用selectObject)中选择位图。

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top