une façon rapide et facile à capturer une partie de l'écran? getPixel était lent et GetDIBits semblait un peu complcated comme début

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

Question

Je tentais un code pour capturer une partie de l'écran à l'aide getPixel sous Windows, avec le contexte de dispositif étant nul (pour capturer l'écran au lieu de la fenêtre), mais il était vraiment lent. Il semble que GetDIBits () peut être rapide, mais il semble un peu complcated ... Je me demande s'il y a une bibliothèque qui peut mettre toute la région dans un tableau, et pixel [x] [y] retourne la couleur 24 bits code du pixel?

Ou est telle bibliothèque existe sur le Mac? Ou si Ruby ou Python a déjà une telle bibliothèque qui peut le faire?

Était-ce utile?

La solution

Je ne l'ai jamais fait cela, mais je vais essayer de:

  1. créer un contexte de dispositif de mémoire (DC) en utilisant CreateCompatibleDC le passant le contexte du périphérique de l'ordinateur de bureau (GetDC (NULL)).

  2. Créer un fichier bitmap (en utilisant CreateCompatibleBitmap) même taille que la région de votre capture.

  3. Sélectionnez le bitmap dans le DC vous créé (en utilisant SelectObject).

  4. Faites un BitBlt de la DC bureau du DC que vous avez créé (en utilisant le drapeau SRCCOPY).

Travailler avec Contextes de l'appareil peut provoquer des fuites GDI si vous faites les choses dans le mauvais ordre alors assurez-vous que vous avez lu la documentation sur toutes les fonctions que vous utilisez GDI (par exemple SelectObject, GetDC, etc.).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top