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 mittelsBitmap^ 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