Bonjour à tous,
Je voudrais savoir si il est possible de convertir un drawingArea en une image pour "Exporter" un graphique que je realise dans mon appli.
Merci à celui qui connait la réponse et à ceux qui lise ce post
Bonjour à tous,
Je voudrais savoir si il est possible de convertir un drawingArea en une image pour "Exporter" un graphique que je realise dans mon appli.
Merci à celui qui connait la réponse et à ceux qui lise ce post
Pour un JPanel cette méthode doit pouvoir fonctionner (à vérifier quand même je viens de la taper au feeling!):
Pour un drawingArea je ne garantis rien, mais si, comme je le pense il implémente les méthodes paint, getWidth et getHeight il n'y a pas de raison que ça ne fonctionne pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 public BufferedImage genererImage(){ BufferedImage bImage= new BufferedImage(this.getWidth(),this.getHeight(),BufferedImage.TYPE_INT_RGB); Graphics2D g2D= (Graphics2D) bImage.getGraphics(); this.paint(g2D); return bImage; }
S'il n'y a pas de solutions, il n'y a pas de problème.
Tu peux facilement mettre une image dasn un JLabel....
Le nom ici étant un chemin relatif. Cette méthode marche aussi avec les chemins absolu (C:/blablabla/bliblibli/nom_de_ton_image.extension)
Code : Sélectionner tout - Visualiser dans une fenêtre à part JLabel image = new JLabel(new ImageIcon("nom_de_ton_image.extension"));
Mais si tu veux absolument mettre ton image dans un JPanel alors là....
Envoyé par cysboy
En fait je veux pas mettre une image dans un JPanel, je veux creer une image de mon JPanel. JMLLB m'a donner une solution je vais la tester.
Bonjour,
Je rebondis sur ce vieux post car j'ai le même souci.
Je souhaite transformer un JPanel en image. J'utilise pour cela la méthode d'écrite dans la FAQ :
mais l'image générée est noire. Le seul moyen que j'ai trouvé pour obtenir l'image du JPanel est de d'abord afficher le Jpanel dans une frame puis d'utiliser la méthode et enfin fermer la frame. Ce qui n'est pas géniale comme solution.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public Image getImage(Component component){ if(component==null){return null;} int width = component.getWidth(); int height = component.getHeight(); BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics2D g = image.createGraphics(); component.paintAll(g); g.dispose(); return image; }
Si quelqu'un avait une idée ...
Barjovial
Une petite recherche t'aurais amené la réponse ^^
http://www.developpez.net/forums/d76...re-jcomponent/
Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.
Salut,
Merci pour ta réponse, j'ai pourtant pas mal cherché mais visiblement pas avec les bons critères.
Cependant cela ne fonctionne pas encore complètement. Le panel que je souhaite transformer en image est composé de plusieurs JPanel qui contiennent des JComponents.
En utilisant le doLayout sur le contentPane de la JWindow le premier panel ainsi que les sous panels sont affichés mais pas les JComponents des sous panel.
En utilisant le paintAll au lieu de paint l'image redevient noire.
Voici le code que j'utilise :
J'ai également essayé avec la méthode paintComponent sans résultat.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 private static Image getImage(JPanel panel){ JWindow jwindow = new JWindow(); jwindow.setContentPane(panel); jwindow.pack(); jwindow.doLayout(); jwindow.validate(); int width = panel.getWidth(); int height = panel.getHeight(); BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics2D g = image.createGraphics(); jwindow.getContentPane().paintAll(g); g.dispose(); jwindow.dispose(); return image; }
J'ai continué à chercher mais je ne vois pas pourquoi les JComponents ne sont pas affichés !
Pourtant quand j'affiche la jwindow tout est bien affiché. J'ai également essayé de faire doLayout sur les sous panels mais cela ne change rien.
Si quelqu'un avait une idée cela me débloquerais bien !!
Barjovial
Salut,
J'ai trouvé d'ou venait le problème :
je surchargeais la méthode paint au lieu de la méthode paintComponent pour les sous panels
Maintenant tout fonctionne correctement.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager