aktuelle Farbe (RGB) unter dem Mousepointer



  • Weiss vieleicht jemand wie man die aktuelle farbe unter dem Mousepointer ermitteln kann??

    Zum beispiel wenn ich über einen Farbverlauf (den ich selber erstellt habe) die Maus bewege, soll die Aktuelle Farbe ermittelt werden.

    greez denjo303



  • Wenn du den Farbverlauf erstellst, dann kannst ihn in einem Bitmap
    speichern und per GetPixel(x,y) die Farbe daraus auslesen.
    Oder mittels

    Bitmap^ CaptureScreen() {
        Drawing::Bitmap^ b = gcnew Drawing::Bitmap(
                  SystemInformation::VirtualScreen.Width,
                  SystemInformation::VirtualScreen.Height);
        Drawing::Graphics^ g = Drawing::Graphics::FromImage(b);
        g->CopyFromScreen(0, 0, 0, 0, b->Size);
        delete g;
        return b;
    }
    
    Bitmap^ b = CaptureScreen();
    Drawing::Color c = b->GetPixel(10,10);
    

    den Bildschirminhalt lesen.
    (von http://dotnet-snippets.de/dns/screenshot-erstellen-SID698.aspx
    VB -> VC++)

    Alex



  • Die technik kenn ich auch, ist auch im prinzip ne gute lösung.

    Gibts aber nichts womit man quasi Direkt abfrageb kann welche farbe sich gerade unter dem Mauszeiger befindet??



  • Mir wäre nichts bekannt. Wenn es schneller gehen
    soll, müssen die Objekte irgendwo gespeichert werden
    anstatt sie jedesmal neu zu erzeugen. Und das Bitmap
    kann ja 1x1 Pixel klein sein (und muss dann nur von
    der richtigen Stelle kopiert werden).

    Alex



  • Mit der Bitmap geht es schon gut, aber wie kann man den Zielbereich einstellen, ich hab nur die grössenangabe und nicht die Location.

    Trotz das ich den Farbverlauf als objekt habe und der "kleine" Screenshot eigentlich die koordinaten des objektes haben sollte, fängt er ganz rechts oben an? 😮

    Das objekt befindet sich aber ein wenig in der Mitte..?!?



  • Hallo!
    In die Destination einfach die Cursor-Koordinaten schreiben:

    g->CopyFromScreen(Cursor->Position.X, Cursor->Position.Y, 0, 0, b->Size);
    

    Das MouseMove-event liefert nur lokale Koordinaten zurück.

    Alex



  • klaaar..., man sollte sich nur mal die methoden genau anschauen, bevor mal dumme fragen stellt...

    Danke LionAM

    so gehts einwandfrei


Anmelden zum Antworten