IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

2D Java Discussion :

Controler l'animation d'un .gif


Sujet :

2D Java

  1. #1
    SGJ
    SGJ est déconnecté
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 59
    Par défaut Controler l'animation d'un .gif
    Bonjour,

    Je suis nouveau sur ce forum parceque j'ai décidé de m'y mettre au langage java. Le site developpez est vraiment impréssionnant par sa richesse. Je pense que je vais pouvoir y trouver des réponses à mes questions.

    Je suis en train de faire une simple application qui charge un .gif. J'ai utilisé un JPanel qui contient un JLabel qui charge le .gif.

    Ca marche mais le gif bouge tout le temps à grande vitesse et l'image scintille très désagréablement. Pourtant lorsque je la charge avec Internet explorer par example, l'animation du gif est agréable.

    Questions:
    1- Comment pouvoir controler la vitesse de l'animation du .gif.
    2- Comment peut on arrêter et redémarrer l'animation du point gif par un simple clique de souris.
    3- En premier essai, j'ai utilisé un JLabel. Mais j'aurai pu utiliser un canva par example. Qu'est ce que me conseillez vous sachant que l'idée est d'avoir au final une image chargée qui contient des .gif qui s'anime lorsqu'on clique dessus.

    Merci bien

  2. #2
    Membre expérimenté Avatar de aDamas
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2004
    Messages : 260
    Par défaut
    Je ne m'y connais pas trop en gif, mais si je ne m'abuse, un gif animé est composé de plusieurs images, si tu arrivais à les extraire de ton gif tu pourrais les traiter séparément, choisir précisément à quelle fréquence tu peux les afficher. C'est une idée...

    Citation Envoyé par SGJ
    En premier essai, j'ai utilisé un JLabel. Mais j'aurai pu utiliser un canva par example. Qu'est ce que me conseillez vous sachant que l'idée est d'avoir au final une image chargée qui contient des .gif qui s'anime lorsqu'on clique dessus.
    Personnelement je dériverais la classe JPanel dans laquelle je redéfinirais la méthode paintComponent(Graphics g) pour dessiner l'image, je trouve ça plus propre. Mais c'est une question de goût.

  3. #3
    SGJ
    SGJ est déconnecté
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 59
    Par défaut
    Merci de ta réponse.
    J'y ai pensé d'extraire les images du gif et des les manipuler à la main. C'est ce que je ferai si je n'arriverai pas à trouver de réponses comment controler l'exécution du gif bien que ça sera un peu plus compliqué.

    >>>choisir précisément à quelle fréquence tu peux les afficher
    Quel objet me conseillerais tu pour implémenter l'animation (après avoir extrait les images du gif) et la controler à travers la souris. Je pensais à l'objet MediaTracker bien qu'il n'a pas l'air d'avoir de fonctionalités très évolués.

    Merci

  4. #4
    Membre expérimenté Avatar de aDamas
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2004
    Messages : 260
    Par défaut
    Pourquoi pas, moi je pensais à un simple timer, mais bon... Genre tout les tant de seconde, il t'avertit et tu affiche l'image suivante, en faite refaire un MediaTracker simplifié.

  5. #5
    SGJ
    SGJ est déconnecté
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 59
    Par défaut
    Merci.
    D'autres idées pour controler un gif directement par un programme Java ?

  6. #6
    Membre confirmé Avatar de lebesnec
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 82
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public class Gif extends JPanel {
     
       protected void paintComponent(Graphics g) {
          // efface le contenu précédent :
          g.setColor(Color.WHITE);
          g.fillRect(0, 0, this.getWidth(), this.getHeight());
          // dessine le gif :
          g.drawImage(uneImage, 1, 1, 30, 30, this);
       }
     
    }
    la méthode drawImage dessine le gif sur le panel, à la position et à la taille données en paramètre. En mettant "this" en dernier paramètre, le gif sera animé.

    @+

  7. #7
    SGJ
    SGJ est déconnecté
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 59
    Par défaut
    Bonne année et merci pour ta réponse.
    Si j'ai bien compris, lorsque j'appelle la méthode paintcomponent au moment voulu, l'image sera chargée et elle sera animée.

    La question est que est ce qu'elle va restée animée tout le temps. Ce que je veux est qu'elle s'anime pendant un moment puis qu'elle s'arrête. Elle s'animera de nouveau lorsqu'on clique dessus puis elle s'arrête et ainsi de suite.

    Merci

  8. #8
    Membre confirmé Avatar de lebesnec
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 82
    Par défaut
    avec l'extrait de code que je t'ai donné ci-dessus, l'animation sera continue.

    Tu doit pouvoir facilement obtenir l'effet désiré avec un bout de code dans paintCompent du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if (enContinue) {
        g.drawImage(uneImage, 1, 1, 30, 30, this); 
    } else {
        g.drawImage(uneImage, 1, 1, 30, 30, null); 
    }

  9. #9
    SGJ
    SGJ est déconnecté
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 59
    Par défaut
    Merci beaucoup, je vais l'essayer.

    A+

  10. #10
    Membre expérimenté Avatar de aDamas
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2004
    Messages : 260
    Par défaut
    Sinon, j'ai trouvé un bout de code qui permet d'extraire les différentes images d'un gif sur le forum de sun ici :

    http://forum.java.sun.com/thread.jsp...hreadID=500348

    J'espère que cela t'aidera.

Discussions similaires

  1. controler une animation par Slider (nouvelle fenêtre)
    Par theneoboy dans le forum Windows Presentation Foundation
    Réponses: 10
    Dernier message: 26/05/2010, 16h39
  2. Animation d'un GIF dans un QTextBrowser
    Par LittleWhite dans le forum Qt
    Réponses: 14
    Dernier message: 19/09/2009, 00h39
  3. [FLASH 8] Faire appel à un fichier animé de type .GIF
    Par °°° Zen-Spirit °°° dans le forum Flash
    Réponses: 3
    Dernier message: 28/07/2006, 10h53
  4. [VB]Animation d'un gif
    Par alex_95 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 01/03/2006, 19h19
  5. Controler une anim Flash
    Par Nico-ganja dans le forum Flash
    Réponses: 2
    Dernier message: 04/03/2003, 00h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo