Pixel abfrage beim Bildschirm!

WARFIRE

Grünschnabel
Hi Leute,

ich habe mal eine Frage zu der ich nichts finden konnte:

Ich suche eine Funktion in C++ die mir die RGB Werte eines Pixels an der Stelle x,y übergibt. Ich kenne bereits GetPixel aber hier können glaub ich nur Bitmaps ausgelesen werden. Wie mache ich das wenn ich einen Punkt auf dem Bildschirm haben will?

MFG
WARFIRE
 
Mit "GetPixel" (Win32-API) werden die Pixel aus einem Devicekontext ermittelt.
Den Devicekontext für den Bildschirm kannst du dir so holen:
C++:
HWND hWnd = GetDesktopWindow();
HDC  hdc  = GetWindowDC(hWnd);

int x = ... ;
int y = ... ;

COLOREF cr = GetPixel(hdc, x, y);

ReleaseDC(hWnd, hdc);
Gruß
MCoder
 
COLOREF cr = GetPixel(hdc, x, y);

ReleaseDC(hWnd, hdc);

Die Beiden Zeilen habe ich nicht verstanden.
1. Was für eine Struktur wird da erstellt?
2. Wofür steht Release?
 
1. "COLORREF" ist keine Struktur sondern ein "unsigned long" (da gibt's irgendwo in den Tiefen Windows API ein typedef für), der den Farbwert des Pixels enthält.
2. "ReleaseDC" löscht, wie der Name schan sagt, den DeviceContext, der mit "GetWindowDC" erzeugt wird.
 
Mit welcher Entwicklungsumgebung werkeltst du denn und was für einen Projekttyp hast du erzeugt? Die Funktion benötigt die Gdi32.lib, die aber bei einer Windows-App automatisch mit verwendet werden sollte.

Gruß
MCoder
 
Ja du hast recht! :) Arbeite mit DevC++. Mit einer Consolenanwendung klappt es nicht. Weißt du wie ich in einem Consolenprogramm die Gdi32.lib einbinden kann?

MFG
WARFIRE
 
Sorry, mit DevC++ kenne ich mich überhaupt nicht aus.
Die Bibliotheken müssen aber irgendwo bei den Linkereinstellungen hinzugefügt werden.

Gruß
MCoder
 

Neue Beiträge

Zurück