Swing: Wie grafische Informationen unter einer Komponente lesen?
-
22-08-2019 - |
Frage
Wie kann ich "lesen" grafische Informationen unterhalb einer Komponente (Sagen wir mal wie BufferedImage )?
Ich möchte, dass die Komponente halbdurchlässig machen (bereits geschehen) und gelten grafische Effekte auf darunter liegende Material, wie Unschärfe alle Elemente unter dieser Komponente ( nicht aber die Komponente selbst ).
Mein Ansatz ist wahrscheinlich falsch:
Ich versuche, grafische Informationen aus Graphics2D Instanz, die ich gegeben zu bekommen
in der Farbe (...) Methode, aber es ist leer, nicht wahr?
Lösung
Frage: ist die Komponente der obersten Ebene (das heißt, tun Sie wissen wollen, was unter einem JFrame auf dem Desktop ist), oder möchten Sie nur über Komponenten kennen, die unterhalb der Komponente geschichtet sind
Wenn 1), dann ist es eine einfache Sache, einen Screenshot mit dem java.awt.Robot
Methode createScreenCapture(Rectangle)
; die Rectangle
sollten Ihre Fenstergrenzen in diesem Fall sein.
Wenn 2), dann, wenn Sie einen Verweis auf die Komponente unterhalb haben, können Sie sich die Tatsache zunutze machen, die a href <= "http://java.sun.com/javase/6/docs/api/java /awt/Component.html#paint(java.awt.Graphics)“rel = "nofollow noreferrer"> paint(Graphics)
kümmert sich nicht darum, wo das Graphics
Objekt herkommt. Sie können eine BufferedImage
erstellen, rufen Sie createGraphics()
(falls ein Graphics2D
erwartet wird), und das Ergebnis an die paint(Graphics)
Methode der Komponente übergeben, die Sie erfassen möchten.
Beachten Sie, dass, wenn die Komponente ein Behälter ist, ist es auch seine Kinder malen wird; Dies kann oder kann nicht sein, was Sie wollen.