任何快速简便的方法来捕捉屏幕的一部分? getPixel很慢,GetDIBits似乎有点复杂作为开始

时间:2009-05-13 17:04:40

标签: winapi macos screen capture getpixel

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

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

1 个答案:

答案 0 :(得分:3)

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

  1. 创建内存设备上下文(DC) 使用CreateCompatibleDC传递它 桌面的设备上下文 (的GetDC(NULL))。

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

  3. 在DC中选择位图 创建(使用SelectObject)。

  4. 从中做一个BitBlt 桌面DC到你创建的DC(使用SRCCOPY标志)。

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