Question

Comment pourrais-je des informations graphiques "lire" sous un élément (Disons BufferedImage )?

Je veux faire ce composant semi-translucide (déjà fait) et appliquer des effets graphiques sur la substance sous-jacente, tels que le flou tout éléments sous ce que le composant ( mais pas le composant lui-même ).

Mon approche est erronée probable:
J'essaie d'obtenir des informations graphiques d'exemple Graphics2D donné à moi dans le peinture (...) méthode, mais elle est vide, pas vrai?

Était-ce utile?

La solution

Question: est votre top niveau des composants (à savoir, voulez-vous savoir ce qui est sur le bureau sous un JFrame), ou voulez-vous juste savoir sur les composants qui sont en couches sous le composant

Si 1), il est une simple question de saisir une capture d'écran avec le méthode java.awt.Robot createScreenCapture(Rectangle) ; le Rectangle devrait être vos limites de la fenêtre dans ce cas.

Si 2), alors si vous avez une référence au composant en dessous, vous pouvez utiliser le fait que paint(Graphics) ne se soucie pas l'objet Graphics est venu. Vous pouvez créer un BufferedImage, appel createGraphics() (dans le cas où un Graphics2D est prévu), et passer le résultat à la méthode paint(Graphics) du composant que vous voulez capturer.
Notez que si le composant est un conteneur, il peindra ses enfants aussi; Cela peut ou peut ne pas être ce que vous voulez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top