Farbe einer bestimmten Position ermitteln
-
Hallo,
mit welcher Funktion ist es möglich die Farbe einer bestimmten Position am Bildschirm auszulesen?
GetPixel?
Lg
-
Genau, damit solltest du das machen können - und wenn du nur einen einzelnen Pixel abfragen willst, ist das auch recht vernünftig.
Willst du aber von sehr vielen Pixeln die Farbwerte ermitteln, so gibt es effizientere Möglichkeiten...
-
hmmm ne idee wieso das nicht klappt?
COLORREF pixel;
HDC dcDesktop;
dcDesktop=GetWindowDC(GetDesktopWindow);pixel=GetPixel(dcDesktop, 8, 8);
-
Versuch es mal so:
HDC dcDesktop = GetDC(NULL); pixel=GetPixel(dcDesktop, 8, 8); int red = GetRValue(pixel); int blue = GetBValue(pixel); int green = GetGValue(pixel); ReleaseDC(NULL,dcDesktop);
-
Hab vorher eh die Boardsuche verwendet und diesen Code-Schnipsel verwendet, geht leider auch ned^^.
-
Hab vorher eh die Boardsuche verwendet und diesen Code-Schnipsel verwendet, geht leider auch ned^^.
-
Hmm ich hab mir mal mit GetDc und dem Handle vom Desktop (hab da mal SysListView32 gnommen als ersten Parameter von Findwindow)
den hwc-handle holen wollen liefert aber immer noch -1 zurück.Ich denke das liegt am Parameter oder?
Lg
-
Ich hatte bei ReleaseDC noch nen Fehler und habe jetzt auch mal noch die einzelnen Farbwerte abgeprüft (Änderungen siehe oben) - also bei mir läuft das ohne Probleme...
-
Kanns leider ned überprüfen,egal ob ich if(pixel==-1)oder (pixel==0) etc eingebe ich bekomm keine Testausgabe.
-
RUM KOKOS schrieb:
egal ob ich if(pixel==-1)oder (pixel==0) etc eingebe ich bekomm keine Testausgabe.
Wieso sollte das auch gerade 0 oder -1 sein? Entweder das ist ein Farbwert oder CLR_INVALID...
-
k CRL_INVALID ist es nicht, also vermutlich ein gültiger wert.
ich will üperprüfen wann ein bestimmtes pixel eine bestimmte farbe hat.
die 2 möglichen farben habe ich ermittelt, nur leider finde ich nirgends (bei google) ne Möglichkeit wie ich nachsehen kann ob ein pixel den von mir ermittelten Farb-Wert hat.
-
die farben habe ich über ein anderen programm ermittelt
-
So ist dieser Vergleich in Ordnung?
COLORREF pixel; HDC dcDesktop = GetDC(0); pixel=GetPixel(dcDesktop, 546, 118); if (pixel==CLR_INVALID) { MessageBox(NULL, (LPCTSTR) "nix-ok",NULL, MB_OK | MB_ICONINFORMATION); } return 0; int red = GetRValue(pixel); int blue = GetBValue(pixel); int green = GetGValue(pixel); ReleaseDC(NULL,dcDesktop); COLORREF pixel_2; HDC dcDesktop_2 = GetDC(0); pixel_2=GetPixel(dcDesktop_2, 546, 118); int red_2 = GetRValue(pixel_2); int blue_2 = GetBValue(pixel_2); int green_2 = GetGValue(pixel_2); ReleaseDC(NULL,dcDesktop_2); if ((red==red_2)&&(blue==blue_2)&&(green==green_2)) { MessageBox(NULL, TEXT ("In Ordnung"),NULL, MB_OK | MB_ICONINFORMATION); }
-
ok thx habs, thread kann gelöscht werden
-
Du kannst dir auch mit dem RGB-Makro einen Farbwert zusammensetzen und "pixel" dann damit vergleichen.
PS: Du holst in deinem Code zweimal die Farbe des selbe Pixels - warum sollte diese beim 2. Aufruf anders sein?!