conserver l'etat d'une bufferedImage

conserver l'etat d'une bufferedImage - Java - Programmation

Marsh Posté le 16-05-2011 à 16:33:49    

Bonjour à tous !
Je parcours très souvent votre forum qui regorge d'informations très utiles lorsque je suis bloqué !
Hors aujourd'hui je suis devant une impasse. Après une heure de recherche sur Internet, je n'ai toujours pas trouvé de réponses. C'est pourquoi je viens vous demander de l'aide :)
 
Voila mon problème :
 
Je voudrais, dans une applet Java, créer une bufferedImage et dessiner dedans, mais sans l'afficher.
Et plus tard dans mon code, je voudrais l'afficher telle que je l'ai dessinée précédemment.
 
Hors j'ai l'impression que le Graphics de la bufferedImage se réinitialise entre le moment ou je dessine et le moment ou je l'affiche dan l'applet.
 
D'ou ma question : Comment sauvegarder l'état graphique d'une bufferedImage sans passer par un fichier.
 
Voila mon code :
 

Code :
  1. //Fonction qui créé la bufferedImage et la renvoie dans un vecteur verticalImage ( la fonction setPolice change le font du //Graphics avec le nom, la taille et le style de la police )
  2. public Image createImage(Vector<String> chaine, String police)
  3. {
  4.  setPolice(getGraphics(), police);
  5.  BufferedImage tmpImg = new BufferedImage(this.getWidth(), this.getGraphics().getFontMetrics().getHeight()*(chaine.size()+1), BufferedImage.TYPE_INT_RGB);
  6.  setPolice(tmpImg.getGraphics(), police);
  7.  tmpImg.getGraphics().setColor(colorFontText);
  8.  tmpImg.getGraphics().fillRect(0, 0, tmpImg.getWidth(), tmpImg.getHeight());
  9.  tmpImg.getGraphics().setColor(colorText);
  10.  tmpImg.getGraphics().drawRect(0, 0, tmpImg.getWidth(), tmpImg.getHeight());
  11.  for(int i=0;i<chaine.size();++i)
  12.  {
  13.   tmpImg.getGraphics().drawString(chaine.elementAt(i), tmpImg.getWidth()/2-(tmpImg.getGraphics().getFontMetrics().stringWidth(chaine.elementAt(i))/2), tmpImg.getGraphics().getFontMetrics().getHeight()*(i+1));
  14.  }
  15.  Image img = tmpImg;
  16.  return img;
  17. }


 
et voici la fonction d'appel qui est elle-même appelée dans la fonction paint()
 

Code :
  1. public void afficherCadre(int width, int height, Graphics g)
  2. {
  3.  verticalImage = redimensionImages(verticalImage, true, width, height);
  4.  horizontalImage = redimensionImages(horizontalImage, false, width, height);
  5.  int x =0;
  6.  int y =0;
  7.  for(int i=0;i<verticalImage.size();++i)
  8.  {
  9.   g.drawImage(verticalImage.elementAt(i), x, 0, null);
  10.   x+=verticalImage.elementAt(i).getWidth(null);
  11.   y = verticalImage.elementAt(i).getHeight(null);
  12.  }
  13. }


 
 
Voila, merci d'avance !
Cordialement
 
Enygm

Reply

Marsh Posté le 16-05-2011 à 16:33:49   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed