Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
649 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Faire une attente entre 2 affichage d'image

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Faire une attente entre 2 affichage d'image

n°1309336
osok
Posté le 19-02-2006 à 22:38:08  profilanswer
 

g.drawImage((new ImageIcon("0.gif" )).getImage(),200,200,null);
g.drawImage((new ImageIcon("1.gif" )).getImage(),200,200,null);
 
J'aimerais faire une pti tps d'attente entre les 2 affichages d'image (qui sont superposés) pour faire une sorte de ptite animation. Probleme quand je met un wait entre les 2 instructions, le prog fait bien un tps d'attente mais avant d'afficher la premiere image. Ce qui fait qu'il attend puis affiche les images donc on ne voit que la derniere image afficher.
 
Donc j'aurais voulu savoir comment faire pour avoir un tps d'attente qui me permettrais de voir la premiere image pendant par exemple 0,5s et de pouvoir realiser une mini animation.
 
Merci à tous.

mood
Publicité
Posté le 19-02-2006 à 22:38:08  profilanswer
 

n°1309407
milootoolo​o
Posté le 20-02-2006 à 01:32:53  profilanswer
 

Tu ferais bien d'utiliser un gif animé..

n°1309824
osok
Posté le 20-02-2006 à 17:07:41  profilanswer
 

Ouai mais je prefererais utiliser une succession d'images (5 ou 6) pour faire une ptite animation basique.

n°1310325
ChristianS​_
Posté le 21-02-2006 à 10:49:35  profilanswer
 

humm, bizarre....
 
g  est bien le Graphics du paint(Graphics g)  ?
 
essais avec un getContentPane().getGraphics().drawImage(...)  (en supposant que c'est dans une JFrame et non une applet )
 
Sinon, dans la doc sur DrawImage, il y'a :
 
This method returns immediately in all cases, even if the complete image has not yet been loaded, and it has not been dithered and converted for the current output device.  
 
If the image has not yet been completely loaded, then drawImage returns false. As more of the image becomes available, the process that draws the image notifies the specified image observer.
 
essais avec un sleep() plus elevé pour voir si il peut afficher les 2 images l'une apres l'autre..
 
 
...Nous ne voyons pas d'autre explication...

n°1310377
breizhbugs
Posté le 21-02-2006 à 11:32:53  profilanswer
 

osok a écrit :


Probleme quand je met un wait entre les 2 instructions, le prog fait bien un tps d'attente mais avant d'afficher la premiere image.  


En fait si c'est comme sous windows, le drawimage ne dessine pas vraiment l'image dans la fenetre immediatement.
L'image est dessinée pendant un evenement du style onPaint() de la fenetre. Comme il y a 2 images succesives, tu ne vois que la derniere.
 
Il faudrait que tu fasse:
drawimage(1...)
UpdateWindows()->Cherche dans la doc de la classe fenetre pour trouver la methode correcte, methode qui fait se redessiner la fenetre.
wait()
drawimage(2...)
wait() etc.
 
Cela dit une methode plus correcte serait de
1-Creer un timer qui fait se redessiner la fenetre
2- Dans la methode onpaint de la fenetre tu dessine 1 seule image. le nom de fichier est dans un tableau dont l'indice change a chaque appel, comme ca l'image change a chaque appel.
 
(Cela dit il y a longtemps que je n'ai pas fait de java, donc surtout consulter la doc pour trouver les fonctions correctes dont je parle)

n°1310940
osok
Posté le 21-02-2006 à 19:26:21  profilanswer
 

class MaFenetre extends JFrame{
 private JPanel pan;
 
 MaFenetre(){
  setTitle("essai" );
  setSize(800,500);
  pan=new Paneau();
  getContentPane().add(pan);
 }
}
 
class Paneau extends JPanel{
 public void paintComponent(Graphics g){
  super.paintComponent(g);
  g.drawImage((new ImageIcon("1.gif" )).getImage(),200,200,null);
    g.drawImage((new ImageIcon("2.gif" )).getImage(),200,200,null);
     g.drawImage((new ImageIcon("3.gif" )).getImage(),00,200,null);
 }
}
 
public class PremTxt {
 public static void main (String args[]){
  MaFenetre fen=new MaFenetre();
  fen.setVisible(true);
 }
}

n°1310944
osok
Posté le 21-02-2006 à 19:31:54  profilanswer
 

Voilà mon pti bout de programme (dsl pour l'indentation).
 
Apparament il fait que je fasse un update (de la classe JFrame) mais le probleme c'est que la methode paintComponent est appelé "indirectement" par getContentPane() donc je peux pas passer la fenetre en parametre.
 
En fait je voudrais juste (pour tester) créer une fenetre puis d'afficher plusieurs images à la suite les unes des autres (avec un pti wait entre chaque image histoire de voir une mini animation).
Mais petit probleme je sais pas comment m'y prendre... Donc si vous pouviez m'aider c'est juste pour voir comment je pourrais faire une animation.
 
Merci.

n°1311092
wapcamer
Posté le 21-02-2006 à 23:56:26  profilanswer
 

Salut,
c'est pas exactement comme ca que tu dois t'y prendre.
La methode paint() affiche appres ce que tu lui as dit d'afficher dedans.
En fait pour tes trois images successives, tu dois faire 3 appels a repaint() en changeant la valeur du nom de l'image a afficher. en gros ca donnerait:
 

Code :
  1. ...
  2. monImage = "image1";
  3. repaint();
  4. try{Thread.sleep();}catch(){}
  5. monImage = "image2";
  6. repaint();
  7. try{Thread.sleep();}catch(){}
  8. monImage = "image3";
  9. repaint();
  10. try{Thread.sleep();}catch(){}
  11. ...


 
et eventuellement dans une boucle while() pour faire une animation.
 
Bon courage  :hello:
 
EDIT: c'est peut-etre update au lieu de repaint, faut verifier les apis


Message édité par wapcamer le 21-02-2006 à 23:58:38

---------------
Voir les RAW sous Android: https://market.android.com/details? [...] .RawVision Blog Photo: http://photouch.me Applications mobiles: http://caketuzz.com Wapcam Project: http://wapcam.mobi
n°1311336
souk
Tourist
Posté le 22-02-2006 à 11:53:33  profilanswer
 

Citation :

try{Thread.sleep();}catch(){}


 
[:pingouino]

n°1311434
ChristianS​_
Posté le 22-02-2006 à 14:01:53  profilanswer
 

essai plutot de faire un  
 
this.setContentPane(Paneau); histoire que paneau soit le panel principal  ( du moins pour tester )
 
et essai de redefinir le paint(g)  de MaFenetre :
 
public void paint(Graphics g)
{
   mets les drawImages ici
}
 
En fait, la methode paintComponent doit etre appelé pour chaque composant du panel principal, et le resultat doit etre visible qu'a la fin de cette boucle donc ça t'affiche que la derniere image.
 
ça devrait marché avec ce que je te dis...

mood
Publicité
Posté le 22-02-2006 à 14:01:53  profilanswer
 

n°1311440
ChristianS​_
Posté le 22-02-2006 à 14:07:07  profilanswer
 

Sinon, sur le meme principe que wapcamer,
dans ton Paneau, tu peux mettre un tableau d'Image et une variable  compteur (int).  
Ensuite dans paintComponent() du paneau, tu fais compteur++,  et du affiche l'image qui correspond au compteur.
 
Le probleme c'est que tu ne maitrise pas les appels à paintComponent , alors l'animation n'aura pas un bon timing...
( sauf si dans MaFenetre tu appel repaint() en boucle avec un sleep()  )

n°1311905
osok
Posté le 22-02-2006 à 23:19:22  profilanswer
 

Merci beaucoup je vais tester ca dès demain (dure journée aujourd'hui lol) et je vous tiens au courant.

n°1313337
osok
Posté le 24-02-2006 à 22:59:22  profilanswer
 

Arf apparament j'ai pas trop compris le fonctionnement de l'affichage d'une image.  
Il sert à quoi le paneau en fait??? Et la methode paintComponent elle est appelé quand???

n°1313727
zapan666
Tout est relatif
Posté le 26-02-2006 à 13:55:45  profilanswer
 

et pourquoi pas faire un thread qui change l'image courante a affiché ? [:petrus75]


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Faire une attente entre 2 affichage d'image

 

Sujets relatifs
aligner verticalement une image ?problème d'affichage flash dans IE
Générer une image avec des données d'un formulaire[JAVA] Redimensionner une image via une matrice
Comment uploader des image avec dreamweaverimage transparente?
<img src="data:image/gif;base64 et IE ( "inline image" )limite image visible, snif
[RESOLU]probleme avec zoom d'image inspiré des portes coulissantesaffichage de liste <ul></ul> sur IE et FF
Plus de sujets relatifs à : Faire une attente entre 2 affichage d'image


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR