Pixelfarbe unter einem Object herausfinden
-
gibt es eine möglichkeit die farbe eines pixels, der von einem steuerelement (z.B. einem Button) verdeckt wird auszulesen?
ich habe es mit GetPixel versucht, aber das geht nur, wenn ich als handle das handle eines TCanvas Objektes übergebe.
nun weiß ich aber nicht auf welchem objekt sich mein steuerelement befindet, deswegen kann ich auch nicht auf das canvas zurückgreifen.
-
Was genau hast du denn damit vor? Du musst auf jeden Fall wohl zuerst das Fenster-Handle herausfinden.
Also es geht darum, den Pixel hinter deinem Button (kann von einem beliebigen Fenster sein?) auszulesen, oder?
-
das handle hab ich (über this->Parent->Handle)
nun brauch ich den pixel auf diesem handle an der Stelle (Button->Left, Button->Top)
-
HWND hButtonWnd = ...; // das hast du ja schon HWND hChildWnd = ...; // hier ermittelst du das verdeckte Fenster RECT rcChild, rcButton; GetWindowRect(hChildWnd, &rcChild); GetWindowRect(hButtonWnd,&rcButton); int iPosChildX = rcChild.left - rcButton.left + iPosXOnButton; // iPosXOnButton hast du ja int iPosChildY = rcChild.top - rcButton.top + iPosYOnButton; // iPosYOnButton hast du ja auch HDC hDCChild = GetDC(hChildWnd); COLORREF crPixel = GetPixel(hDCChild,iPosChildX,iPosChildY); ReleaseDC(hChildWnd,hDCChild);
-
das funzt net, die farbe unter dem Button ist immer schwarz.
nehm ich nen pixel direkt neben dem button, dann funzt es.
kann dass sein, das der bereich unter dem button nie gezeichnet wurde, und daher der bereich schwarz ist?
-
Ja, es kann gut sein, dass man einen verdeckten Pixel gar nicht auslesen kann - aber du kannst ja mal mit InvalidateRect & Co. ein wenig rumspielen
-
ich werd nochmal ein bischen damit rumspielen
ich befürchte aber dass ich unter dem button nur schwarze pixel finden werde