L'exportation Composite Graphiques .png ou .gif ou .jpg

Je suis en train de développer une sorte de peinture à l'aide de Java.

J'ai un JComponent qui est situé à l'intérieur d'un Composite.

J'ai déjà pouvez dessiner des lignes et des rectangles dans cette JComponent.

Maintenant, comment puis-je exporter ces dessins comme une image (png, gif, jpg)?

J'ai essayé ceci:

BufferedImage b = new BufferedImage(1700,1100,BufferedImage.TYPE_INT_RGB);
this.print(getGraphics());
try{ImageIO.write(b,"png",new File("test.png"));}catch (Exception e) {}

Mais que seuls les crée un .fichier png tout en noir.

Aider!!!

RÉSOLU!!!

BufferedImage bi = new BufferedImage(this.getSize().width, this.getSize().height, BufferedImage.TYPE_INT_ARGB); 
Graphics g = bi.createGraphics();
this.paint(g);  //this == JComponent
g.dispose();
try{ImageIO.write(bi,"png",new File("test.png"));}catch (Exception e) {}
Vous devez accepter Tedil de réponse.
Tous les appels à paint œuvres, l'API pour Java dit Applications ne devraient pas invoquer la peinture directement, mais devraient plutôt utiliser la méthode repaint pour programmer le composant pour les redessiner. Le problème est qu'il est difficile de savoir quand la mise à jour de la carte Graphique est fini, de sorte que vous pouvez en effet enregistrer le bon BufferedImage. Certains de mes tests ont révélé que vous pouvez enregistrer un rendu partiellement BufferedImage comme un PNG à l'aide de cette technique.

OriginalL'auteur tiiin4 | 2011-04-13