qualquer maneira rápida e fácil para capturar uma parte da tela? getPixel foi lenta e GetDIBits parecia um pouco complcated como um começo

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

Pergunta

Eu estava tentando algum código para parte captura de tela usando getPixel no Windows, com o contexto dispositivo sendo nula (para captura de tela em vez da janela), mas foi muito lento. Parece que GetDIBits () pode ser rápido, mas parece um pouco complcated ... Gostaria de saber se existe uma biblioteca que pode colocar toda a região em uma matriz, e de pixel [x] [y] retornará a cor de 24 bits código do pixel?

Ou será que tal biblioteca existe no Mac? Ou se Ruby ou Python já tem uma biblioteca de tal forma que pode fazer isso?

Foi útil?

Solução

Eu nunca fiz isso, mas eu tentaria:

  1. Criar um contexto de dispositivo de memória (DC) usando CreateCompatibleDC passá-lo o contexto de dispositivo da área de trabalho (GetDC (NULL)).

  2. Criar um mapa de bits (usando CreateCompatibleBitmap) a mesma tamanho da região a sua captura.

  3. Selecione o bitmap para o DC você criado (utilizando SeleccionarObjecto).

  4. Faça um BitBlt do área de trabalho DC ao DC que você criou (usando o sinalizador SRCCOPY).

Trabalho com contextos de dispositivo pode causar vazamentos GDI se você fizer as coisas na ordem errada, então certifique-se que você leia a documentação sobre todas as funções GDI que utiliza (por exemplo SelectObject, GetDC, etc.).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top