Pixelfarbe eine Image bestimmen



  • Hallo Allerseits.

    Ich bin neu hier und meine C++ Kenntnisse sind auch nicht grade die Besten (quasi Frischling).

    Zu meinem Problem:

    Ich bin verzweifelt auf der Suche die Pixelfarbe eines Image zu bestimmen.

    Ich habe ein Fenster mit einem Image mit 2 verschieden farbigen Flächen(die ich zuvor in das Image zeichne) und möchte quasi wissen wann ein Kreis die andere Fläche "durchfliegt" und diese dann andersfarbig zeichnen.

    Jetzt habe ich schon viel gelesen, dass es mit

    HDC dc = GetDC(0);
    COLORREF col = GetPixel(dc, x,y);
    rgb_r = GetRValue(col);
    rgb_g = GetGValue(col);
    rgb_b = GetBValue(col);

    gehen soll.

    Allerdings liefert mir das "nur" die Farbe des Desktops, richtig?
    Ich bräuchte allerdings jene von meinem Image in meinem Fenster.

    Für jede Art von Hilfestellung wär ich unheimlich dankbar.

    LG
    bubu



  • Dann brauchst du halt das DC von deinem Fenster. Das ist der Parameter von GetDC, statt 0 musst du das HWND von deinem Fenster reingeben.



  • Ok und wie komm ich an diesen hdw wert ran? Wie gesagt. Absoluter Neuling...



  • Wie könnte dir denn eine Pixelfarbe bei der Problemstellung helfen? Was sind das genau für "Flächen"?
    Eine mathematische Lösung wäre vorzuziehen (wenn Fläche1 und Fläche2 sich an einer Koordinate überschneiden, dann zeichne den Pixel in anderer Farbe - vorher Boundingboxen berechnen und nur die nötigen Koordninaten untersuchen).


  • Mod

    bubumannsen schrieb:

    Ok und wie komm ich an diesen hdw wert ran? Wie gesagt. Absoluter Neuling...

    Dann frag nicht, sondernlies ein Tutorial!

    Just my 2 cents!



  • #include <windows>

    int main()
    {
    int main()
    {
    COLORREF farbe;
    HDC desktop;
    POINT maus_pos;

    long maus_sp_x;
    long maus_sp_y;

    HDC handle = GetDC(0); // 0 bedeutet für den ganzen Bildschirm

    while(1)
    {
    system("CLS");
    GetCursorPos(&maus_pos);
    cout << "X:" << maus_pos.x << " Y:" << maus_pos.y << endl;
    maus_sp_x = maus_pos.x;
    maus_sp_y = maus_pos.y;

    farbe = GetPixel(handle , maus_sp_x, maus_sp_y );
    cout<<"RGB Pixel Wert: "<< hex << farbe <<endl;
    }

    }

    Ach ja und deine Frage bezüglich hwnd

    Ich glaub du suchst das hier:

    HWND hwnd = FindWindow(0,"TitleVonDeinemFenster");
    
    // Bsp. Titel vom Windows Taschenrechner ist: Rechner
    

    http://msdn.microsoft.com/en-us/library/windows/desktop/ms633499(v=vs.85).aspx
    http://msdn.microsoft.com/en-us/library/dd144871(v=vs.85).aspx



  • Ich danke euch!


Anmelden zum Antworten