Jede schnelle und einfache Möglichkeit, einen Teil des Bildschirms zu erfassen? getPixel war langsam und GetDIBits schien ein bisschen als Start complcated

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

Frage

Ich habe versucht, einigen Code Teil des Bildschirms mit getPixel auf Windows zu erfassen, mit dem Gerätekontext (zu erfassen Bildschirm statt Fenster) null sein, aber es war sehr langsam. Es scheint, dass GetDIBits () schnell sein kann, aber es scheint ein wenig complcated ... Ich frage mich, ob es eine Bibliothek, die die gesamte Region in eine Reihe stellen kann, und Pixel [x] [y] wird die 24-Bit-Farbe zurückkehren Code des Pixels?

Oder solche Bibliothek existiert auf dem Mac? Oder wenn Rubin oder Python hat bereits eine solche Bibliothek, die das tun können?

War es hilfreich?

Lösung

Ich habe das nie getan, aber ich würde versuchen, zu:

  1. einen Speicher Device Context (DC) erstellen mit CreateCompatibleDC Leiten der Gerätekontext des Desktops (GetDC (NULL)).

  2. Erstellen Sie eine Bitmap (mit CreateCompatibleBitmap) die gleiche Größe wie die Region Ihres Capturing.

  3. Wählen Sie das Bitmap in die DC Sie erstellt (unter Verwendung von AuswählenObjekt).

  4. Starten Sie eine BitBlt aus der Desktop-DC mit dem DC Sie erstellt (mit SRCCOPY Flagge).

mit dem Geräte-Contexts Arbeiten können GDI Lecks verursachen, wenn Sie die Dinge in der falschen Reihenfolge zu tun, um sicherzustellen, dass Sie die Dokumentation auf allen GDI-Funktionen lesen Sie verwenden (z AuswählenObjekt, GetDC usw.).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top