cualquier manera rápida y fácil para capturar una parte de la pantalla? getPixel era lento y parecía un poco GetDIBits complcated como punto de partida

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

Pregunta

Yo estaba tratando un poco de código para capturar parte de la pantalla utilizando getPixel en Windows, con el contexto de dispositivo siendo nula (a la pantalla en lugar de la ventana de captura), pero era muy lento. Parece que GetDIBits () puede ser rápido, pero parece un poco complcated ... Me pregunto si hay una biblioteca que puede poner a toda la región en una matriz, y el píxel [x] [y] devolverá el color de 24 bits código del píxel?

O existe dicha biblioteca en el Mac? O si de Ruby o Python ya cuenta con una biblioteca de tal manera que pueda hacer eso?

¿Fue útil?

Solución

Nunca he hecho esto, pero me gustaría probar a:

  1. Crea un contexto de dispositivo de memoria (DC) usando CreateCompatibleDC pasándolo el contexto de dispositivo del escritorio (GetDC (NULL)).

  2. Crear un mapa de bits (utilizando CreateCompatibleBitmap) la misma tamaño que la región de su captura.

  3. Seleccione el mapa de bits en la DC se creado (usando SelectObject).

  4. Hacer un BitBlt de la escritorio DC a la que creó (usando la bandera SRCCOPY).

Trabajar con contextos de dispositivo puede causar fugas de GDI si haces las cosas en el orden equivocado así que asegúrese de que usted lea la documentación sobre todas las funciones GDI que usa (por ejemplo SelectObject, GetDC, etc.).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top