2009-08-19 11 views
0

Ich arbeite daran, einen Automatisierungscode zu schreiben, und ich stoße auf ein Problem bei der Suche nach einer effizienten Methode zur Untersuchung der Pixel, die derzeit auf dem Bildschirm vorhanden sind.Suchen von Grafikgerätekontext für Pixel mit einer bestimmten Farbe

ich vertraut gemacht habe mich mit der GetPixel Funktion, die in der gdi32 Bibliothek vorhanden ist, aber es ist zu langsam (in der Tat dauert es etwa 10 Sekunden nur eine Linie von etwa 1900 Pixeln zu scannen).

Ich habe die Idee, eine Bitmap aus Segmenten des Grafikgerätekontextes zu erstellen, getestet und getestet, ob dies effizienter ist (was ich mir nicht vorstellen kann, wenn man bedenkt, dass es viel Zeit in Anspruch nehmen würde). (um mit dem Bildschirmbild einigermaßen aktuell zu bleiben), aber bevor ich das tue, würde ich gerne wissen, ob jemand bessere Ideen hat.

Was ich wirklich lieben würde ist eine effiziente Möglichkeit, ein zweidimensionales Array von Pixelfarben in einigen oder allen der Gegenwart (oder einigermaßen nahe an der Gegenwart) Grafik Kontext zu sammeln, hoffentlich mit .NET.

Antwort

0

Was ich am Ende getan habe, war ein Screenshot des gesamten Grafikkontextes zu erfassen und die resultierende Bitmap nach genau dem zu durchsuchen, wonach ich in einem statischen Kontext gesucht habe. Da der Bereich der Grafikausgabe, um den es mir ging, nur etwa 70x70 Pixel betrug, habe ich diesen kleinen Teil alle 10 Millisekunden erfasst und auf interessante Änderungen untersucht.

Dies erforderte keinen unsicheren Code oder Sperren des Grafikkontexts und war einigermaßen effizient.

1

Sie müssen das Bild sperren und direkt mit dem Speicher arbeiten. Es gibt einen guten Artikel darüber, wie man das macht here.

+0

Danke. Ich werde es versuchen, wenn ich von der Arbeit nach Hause komme. – Daniel

Verwandte Themen