qualsiasi modo facile e veloce per catturare una parte dello schermo? getPixel era lento e GetDIBits sembrava un po 'come un inizio complcated

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

Domanda

ho cercato un po 'di codice per acquisire parte dello schermo utilizzando getPixel su Windows, con il contesto dispositivo essendo nullo (per bloccare lo schermo, invece di finestra), ma era molto lento. Sembra che GetDIBits () può essere veloce, ma sembra un po 'complcated ... Mi chiedo se v'è una biblioteca che può mettere tutta la regione in un array, e pixel [x] [y] restituirà il colore a 24 bit il codice del pixel?

O se tale libreria esiste sul Mac? O se Ruby o Python ha già una libreria che può farlo?

È stato utile?

Soluzione

Non ho mai fatto questo, ma mi piacerebbe provare a:

  1. Crea un contesto di periferica di memoria (DC) utilizzando CreateCompatibleDC passando il Device Context del desktop (GetDC (NULL)).

  2. creare una bitmap (utilizzando CreateCompatibleBitmap) lo stesso dimensione come la regione tua cattura.

  3. Selezionare la bitmap nel DC si creato (utilizzando SelectObject).

  4. Fare un BitBlt dal tavolo DC a DC si è creato (usando bandiera SRCCOPY).

Lavorare con i contesti dispositivo può causare perdite GDI se fai le cose in ordine errato quindi assicuratevi di leggere la documentazione su tutte le funzioni GDI che si utilizzano (per esempio SelezionaOggetto, GetDC, ecc.).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top