2 votes

Comment obtenir la sous-image de JPanel ?

BufferedImage possède une méthode getSubimage(x, y, width, height) qui renvoie une image. Je dessine des graphiques sur un JPanel, comment puis-je faire quelque chose de similaire à la méthode BufferedImage avec un JPanel ?

Par exemple (si seulement c'était correct) :

BufferedImage bi = jPanel.getSubimage(x, y, width, height);

Merci.

0voto

m0s Points 2183

Vous pouvez rendre pratiquement n'importe quel composant de swing en une image mise en mémoire tampon.

Puisque vous n'avez besoin que d'une sous-image, je suppose qu'il s'agirait d'un processus en deux étapes : 1) rendre votre JPanel en une BufferedImage, 2) obtenir la sous-image de cette dernière.

BufferedImage bi = new BufferedImage(jPanel.getWidth(), jPanel.getHeight(), BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = (Graphics2D)bi.getGraphics();
panel.printAll(g); //I assume you wanted child elements too... otherwise just use paint(g)
BufferedImage result= bi.getSubimage(...);

Remarque : cela ne fonctionnera qu'une fois que tous les composants auront été initialisés, positionnés, etc. et affichés.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X