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?!


Log in to reply