Java - Obtenir une Image d'un Composite
Je suis en train d'écrire un programme dans lequel j'ai de la peinture sur un JPanel
. Comment puis-je obtenir un Image
de la JPanel
qui est peint sur elle?
J'ai essayé ce code mais tout ce que j'obtiens est une image vide avec la couleur de Fond de mon JPanel
.
Le BufferedImage
ne contient pas de ce qui est peint sur mon panneau.
private BufferedImage createImage(JPanel panel) {
int w = panel.getWidth();
int h = panel.getHeight();
BufferedImage bi = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
Graphics2D g = bi.createGraphics();
panel.paint(g);
return bi;
}
Ce que je fais mal?
Pensez à publier comment vous dessinez votre image. Utilisez-vous des graphiques.drawImage? Si oui, quelle est la ImageObserver argument?
OriginalL'auteur Christos Baziotis | 2012-06-19
Vous devez vous connecter pour publier un commentaire.
Voici un SSCCE illustrant que cela fonctionne. Une erreur commune est de passer
null
comme leImageObserver
de ladrawImage
méthode, car le chargement de l'image est asynchrone.Essayer le code que j'ai posté ci-dessus et de voir les différences avec votre code à l'endroit de votre problème.
OriginalL'auteur Guillaume Polet
Voici un petit exemple de la méthode que vous pouvez ajouter à l'un de vos Java 2/JDK 1.2 les applications. Il suffit de passer le composant que vous souhaitez instantané et le nom de fichier que vous souhaitez enregistrer dans.
Cette méthode est très polyvalent. Il peut être utilisé pour prendre des clichés d'une grande variété de Java composants de l'application. Soyez averti, cependant, que vous utilisez com.sun.image.codec.jpeg à un certain risque pour la portabilité de votre code.
EDIT:
J'ai testé le code pour le rendre sûr et tout semble très bien:
vérifier mon montage, et peut-être ensuite de poster le code qui pourrait donner des problèmes, je ne vois pas comment, parce que comme vous pouvez le voir une fois que vous passez un composant et le nom de la méthode qu'il fait le reste?
OriginalL'auteur David Kroukamp
Votre code fonctionne pour moi.
Voici un exemple simple. Redimensionner l'image pour voir le tableau de variation de la taille et de l'image se déplacer.
De sorte que votre problème doit être ailleurs. Assurez-vous que votre groupe est positif de la taille au point que vous créer une image de lui.
OriginalL'auteur Craigy