Farbe der Pixel unter dem Cursor lesen?

BhaaL

Grünschnabel
Hallo erstmal.

Ich habe vor, per C#.net ein kleines Programm zu schreiben, welches einen Bereich um Cursor farbmäßig erfasst und vergrößert darstellt (ne Art Bildschirmlupe)
Ein Ähneliches Programm hatte ich bereits in VB6 geschrieben, und Schlüsselwörter wie GetCursorPos und GetPixel sind VS.net 2003 bekannt.

Erstes Problem: Einbinden der benötigten Libraries, damit sie auch funktionieren.
- user32.dll für GetCursorPos und GetWindowDC
- gdi32.dll für GetPixel
Code:
[DllImport("User32.dll")]
extern static int GetCursorPos( ref Point thePoint );
(kopiert von einer Seite, die Google ausgespuckt hat)
Funktioniert nicht wirklich, VS.net meint "more than one storage class specified" und "syntax error: identifier 'ref'".
Selbes Problem für die anderen DllImports.

Kann ich erst mal die Cursor Position lesen, könnte ich per GetPixel die Farbe holen. Dafür muss ich erst hDC vom Desktop ermitteln, per GetWindowDC(0). (Problem der DllImports. Gibts hier eventuell eine andere Möglichkeit, die ohne Dlls auskommt?)

So weit mal für einen Pixel. Damit ich einen Bereich um den Cursor bekäme, nehmen wir mal 5x5 an (je 2 link/rechts und oben/unten)
Ich hatte vor, die Farbwerte in einem Array zu speichern, der Annahme entsprechend 5 mal 5 Long Werte (da GetPixel ja Long zurückliefert)
Weil es keine normale Lupe werden soll, will ich mit den Farbwerten natürlich auch was anfangen, unter anderem auf un/gleichheit mit einem anderen Bildschirmbereich prüfen (um zB festzustellen, ob sich etwas geändert hat. Icon verschoben, Hintergrundbild geändert, etwas was in einem 5x5 Feld merklich wäre)
Dazu hätte ich die Frage, ob es eine elegante und schnelle Methode gibt, um zwei Arrays gleicher Größe zu vergleichen (beser gesagt deren Inhalte).
Array1.Equals(Array2); prüft meiner Meinung wie das Java-Equivalent die Referenzen, nicht die Inhalte. Und eine verschachtelte Schleife über beide Arrays ist in meinen Augen nicht so ganz elegant (bei 5x5 noch tragbar, aber was bei 1024x768 und mehr?)

Ein paar kleine Code-Stücke wären nett, ich will mich gleich mal im Vorraus für Eure Antworten bedanken.

mfG, BhaaL
 

Neue Beiträge

Zurück