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 à
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
Vous devez vous connecter pour publier un commentaire.
Tout d'abord,
print()
est la mauvaise méthode.Ce qui je suppose doit fonctionner (pas encore testé):
obtenir le
BufferedImage
's Graphiques (b.createGraphics()
) et d'utiliser cet objet graphique àpaint()
votre panneau/composant.(par exemple
yourPanel.paint(b.createGraphics());
)OriginalL'auteur Tedil
c'est une démo:
vous pouvez le modifier par vous-même.
OriginalL'auteur Roman.Luo