getpixel Methode verwenden nur wie?
-
Hallo @ all
habe folgendes Problem ich würde gerne die getpixel Methode in mein Programm einbinden nur leider werde ich nicht ganz schlau aus der hilfe Datei.
COLORREF GetPixel(
HDC hdc, // handle of device context DEVICE????
int XPos, // x-coordinate of pixel
int nYPos // y-coordinate of pixel
);ich weiß jetzt nicht genau wie ich die verwenden muss wie kann ich von meinem geladenem Bitmap jetzt die Pixel auslesen.
Es wäre schön wenn es vieleicht so was in der Art gibt getpixel(bitmapname,x,y)
Ich hoffe mir kann jemand weiterhelfen
MFG Toby
-
Poste am besten mal den code wie du das Bitmap lädst
-
Hoi!
Also Du kannst auf die Pixel der Bitmap nicht direkt zugreifen. Du musst die Bitmap erst in einen Speicherkontext (oder Gerätekontext) einsetzen, um danach die Pixel damit auslesen zu können.
Zum Ablauf:
1. zum Bildschirm kompatiblen Speicherkontext erstellen (Typ: HDC, Funktion: CreateCompatibleDC, mit dem Parameter NULL)
2. Die Bitmap in einen Bitmap-Handle laden (Typ: HBITMAP, Funktion: LoadImage)
3. Die Bitmap in den Speicherkontext einsetzen (Funktion: SelectObject, dabei musst Du den Return-Wert sichern und später wieder einsetzen)
4. Auf diesen HDC (in dem sich die Bitmap befindet) kannst Du jetzt GetPixel anwenden, nämlich so:COLORREF crDest = GetPixel(hDC, 0, 0);Dies ermittelt Dir die Farbe an der Position [0,0]. Zum Extrahieren der einzelnen Komponenten (Rot, Grün und Blau) kannst Du die Makros GetRValue, GetGValue bzw. GetBValue verwenden.
5. Die alte Bitmap wieder zurückselektieren (ebenfalls mit SelectObject, siehe Hinweis bei 3.)
6. Speicherkontext wieder freigeben (DeleteDC)Informationen zu den Funktionen findest Du in der MSDN.
-
vielen dank für eure schnelle hilfe
MFG Toby