[Java] problème Image

Fermé
ElGreco - 10 janv. 2008 à 20:41
 ElGreco - 12 janv. 2008 à 00:35
Salut !

J'ai un petit problème avec les Images.

Alors voila, toutes les x secondes j'appelle une fonction qui modifie une image.
J'ai donc créé un Vector d'images qui me permet de garder en mémoire l'état de l'image après chaque modification.


// Le Vector
Vector<Image> historique;

// On crée une image
Image offscreen=createImage(getWidth(), getHeight());

// On lie l'image à bufferGraphics pour que tout ce qui est dessiné par buffertGraphics soit dessiné sur l'image
Graphics bufferGraphics=offscreen.getGraphics();

// On appelle la fonction qui modifie l’image

// On ajoute l’image à la fin du Vector après chaque modification
historique.addElement(offscreen);


Or dès que je rajoute une image au Vector, elle continue à être modifiée alors que je voudrais qu'elle reste telle qu'elle était au moment où je l'ai mise dans le Vector.
A voir également:

2 réponses

Doctor C Messages postés 627 Date d'inscription mardi 12 juin 2007 Statut Membre Dernière intervention 19 février 2016 398
10 janv. 2008 à 21:19
je suis pas certains mais, il faudrait sûrement que tu fasses une copie profonde de ton image et que tu places cette dernière dans ton vecteur... de cette manière, tu n'aurais pas une image référencée à ton image que tu modifies continuellement dans ton vecteur.

Je ne me souviens plus très bien comment faire des copies d'images en Java. Peut-être un simple "=" ferait l'affaire. Ou peut-être une fonction préexistante dans la classe Image...

un truc comme:

// Créer une nouvelle image (une copie)
Image copie = createImage(getWidth(), getHeight());
// Copier ton image dans cette dernière... pas certains comment effectuer la copie
copie = offscreen;

// On ajoute l’image à la fin du Vector après chaque modification
historique.addElement(copie);
0
Non cette technique ne marche pas mais il y a bien une fonction dans la classe Image qui renvoit un ImageProducer.
Donc voila ce que j'ai fait pour que ça marche :

Image copie = createImage(getWidth(), getHeight());
ImageProducer improd=offscreen.getSource();
copie = createImage(improd);
historique.addElement(copie);

En tout cas merci ;)
0