# Pixel abfrage beim Bildschirm!



## WARFIRE (7. November 2007)

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


----------



## MCoder (7. November 2007)

Mit "GetPixel" (Win32-API) werden die Pixel aus einem Devicekontext ermittelt.
Den Devicekontext für den Bildschirm kannst du dir so holen:

```
HWND hWnd = GetDesktopWindow();
HDC  hdc  = GetWindowDC(hWnd);

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

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

ReleaseDC(hWnd, hdc);
```
Gruß
MCoder


----------



## WARFIRE (7. November 2007)

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?


----------



## MCoder (7. November 2007)

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 *D*evice*C*ontext, der mit "GetWindowDC" erzeugt wird.


----------



## WARFIRE (7. November 2007)

[Linker error] undefined reference to `GetPixel@12' 

In der Zeile mit COLOREF...


----------



## MCoder (8. November 2007)

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


----------



## WARFIRE (8. November 2007)

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


----------



## MCoder (8. November 2007)

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

Gruß
MCoder


----------

