Ich versuche einen Weg zu finden, um programmatisch die visuelle Farbe (nicht die Auswahlfarbe) des Punktes zu erhalten, an dem ein Benutzer auf eine WorldWind AnalyticSurface klickt.
Betrachten Sie AnalyticSurface und PickedObjectList Ich bin mir nicht sicher, welche API-Aufrufe ich zusammenführen muss, um dies zu tun oder ob es überhaupt möglich ist.
Hier ist eine mögliche Lösung. Probiere es einfach.
Wenn Sie darauf klicken, (ich nehme an, Sie haben ein MouseListener
-Objekt mit einer mouseClicked()
-Methode darin erstellt), holen Sie sich die aktuelle Mauszeigerposition auf dem gesamten Computerbildschirm als Co-rdinate.
Jetzt haben wir die Position des Punktes auf dem Bildschirm angeklickt.
Mithilfe der Robot-Klasse können Sie das Pixel an der Stelle erhalten.
%Vor%Hoffe, das hilft.
Ein wenig auf die API schauen Ich denke nicht, dass es möglich ist, es sei denn, Sie verwenden eine Workaround. OK, fangen wir am Anfang an:
Es scheint keinen leichten Weg zu geben. Können Sie das Klickereignis vom übergeordneten Container abrufen? Oder wenn Sie zum ersten Mal auf einen Button wie "Farbe auswählen" klicken, kann dieser Button einen unsichtbaren Rahmen vor sich halten, dieser packt den nächsten Klick (und wird dann sofort geschlossen und gibt die Farbe an der Klickposition zurück, so dass der Rest wie zuvor funktioniert).
Wenn Sie die Farbe an der angeklickten Position nicht mathematisch berechnen können, können Sie versuchen, createScreenCapture(...)
(Klasse Robot
) zu verwenden und dann die Pixelfarbe mit getRGB(...)
zu erhalten. Oder wenn Sie nach dem transparenten Overlay suchen, können Sie die Farbe direkt erhalten.