begin process at 2010 02 10 08:03:05
  Trouver un code source :
 
dans
 
Accueil > Forum > 

JAVA / J2EE / J2ME

 > 

Multimédia

 > 

Java2D

 > 

repaint pour faire défiler un gif?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

repaint pour faire défiler un gif?

mercredi 10 juin 2009 à 13:47:59 | repaint pour faire défiler un gif?

florianasse

Bonjour,
Je suis débutant en JAVA et j'aimerais faire défiler une image gif le long d'une droite mais je ne sais pas quoi utiliser (paint, repaint, sleep...).
Est-ce que quelqu'un peut me donner un petit coup de pouce sa serait sympa :D
Merci d'avance !!

Voici mon code :

import java.awt.*;
import javax.swing.*;
import java.net.* ;

public class TestDessin extends JPanel {

    private Color color;
    private float offsetX;
    private float offsetY1;
    private float offsetY;
    private float offsetX1;
    private float fa;
    private float fb;
    private float fx;
    private float fy;
   
    public TestDessin() {
    }
    public TestDessin(Color color, float offsetX, float offsetY, float offsetX1, float offsetY1) {
        super();
        this.color = color;
        this.offsetX = offsetX;
        this.offsetX1 = offsetX1;
        this.offsetY = offsetY;
        this.offsetY1 = offsetY1;
        setPreferredSize(new Dimension(1000, 600));
    }

    public void paint(Graphics g) {
        super.paint(g);
        g.setColor(color);
        Image image = this.getToolkit().getImage("plan.gif");
        g.drawImage(image,0,0,this);
        Image image1=this.getToolkit().getImage("b1.gif");
        g.drawImage(image1,(int)offsetX,(int)offsetY,this);
        Image image2=this.getToolkit().getImage("b1.gif");
        g.drawImage(image2,(int)offsetX1,(int)offsetY1,this);
        g.drawLine((int)offsetX, (int)offsetY, (int)offsetX1, (int)offsetY1);
    }
    public void repaint(Graphics g) throws InterruptedException
    {
        float x;
        this.fa=(this.offsetY1-this.offsetY)/(this.offsetX1-this.offsetX);
        this.fb=this.offsetY-this.fa*this.offsetX;
        for(x=offsetX; x<=offsetX1; x++)
        {
            this.fx=x;
            this.fy=this.fa*this.fx+this.fb;
            Image image3=this.getToolkit().getImage("avionS1.gif");
            g.drawImage(image3,(int)offsetX,(int)offsetY,this);
            JOptionPane.showMessageDialog(null, "y:"+this.fy+"\nx:"+this.fx);
        }
    }


    public static void main(String[] args) {
        JFrame jf = new JFrame();
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jf.setSize(500,400);
        // adapter aux coordonné XY de la villeD et XY de la ville A
        TestDessin t=new TestDessin(Color.RED, 50,30,300,100);
        jf.getContentPane().add(t);
        jf.setVisible(true);
       
       
    }

}

mercredi 10 juin 2009 à 17:21:16 | Re : repaint pour faire défiler un gif?

florianasse

Je pense m'être rapprocher de la solution, je ne trouve juste pas le moyen de rappeler la méthode paint dans le run... Si quelqu'un à la solution


import java.awt.*;
import javax.swing.*;
import java.net.* ;

public class TestDessin extends JPanel implements Runnable  {

    private Color color;
    private float offsetX;
    private float offsetY1;
    private float offsetY;
    private float offsetX1;
    private float fa;
    private float fb;
    private float fx;
    private float fy;
    public Thread T;
    
    
    public TestDessin(Color color, float offsetX, float offsetY, float offsetX1, float offsetY1) {
        super();
        this.color = color;
        this.offsetX = offsetX;
        this.offsetX1 = offsetX1;
        this.offsetY = offsetY;
        this.offsetY1 = offsetY1;
        this.fx=offsetX;
        setPreferredSize(new Dimension(1000, 600));
        T = new Thread(this);
        T.start();
    }

    public void paint(Graphics g) {
        super.paint(g);
        g.setColor(color);
        Image image = this.getToolkit().getImage("plan.gif");
        g.drawImage(image,0,0,this);
        Image image1=this.getToolkit().getImage("b1.gif");
        g.drawImage(image1,(int)offsetX,(int)offsetY,this);
        Image image2=this.getToolkit().getImage("b1.gif");
        g.drawImage(image2,(int)offsetX1,(int)offsetY1,this);
        g.drawLine((int)offsetX, (int)offsetY, (int)offsetX1, (int)offsetY1);
        g.drawLine((int)offsetX-1, (int)offsetY, (int)offsetX1-1, (int)offsetY1);
        g.drawLine((int)offsetX+1, (int)offsetY, (int)offsetX1+1, (int)offsetY1);
        g.drawLine((int)offsetX-2, (int)offsetY, (int)offsetX1-2, (int)offsetY1);
        g.drawLine((int)offsetX+2, (int)offsetY, (int)offsetX1+2, (int)offsetY1);
        g.drawLine((int)offsetX-3, (int)offsetY, (int)offsetX1-3, (int)offsetY1);
        g.drawLine((int)offsetX+3, (int)offsetY, (int)offsetX1+3, (int)offsetY1);
        Image image3=this.getToolkit().getImage("avionS1.gif");
        g.drawImage(image3,(int)fx,(int)fy,this);
    }

    public void run() {
        while (true) {
            if(fx<offsetX1)
            {
                this.fa=(this.offsetY1-this.offsetY)/(this.offsetX1-this.offsetX);
                this.fb=this.offsetY-this.fa*this.offsetX;
                fx=fx+1;
                fy=fa*fx+fb;
                invalidate();
                try {T.sleep(100);} catch (InterruptedException e) {}
            }
        }
    }


    public static void main(String[] args) {
        JFrame jf = new JFrame();
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jf.setSize(500,400);
        // adapter aux coordonné XY de la villeD et XY de la ville A
        TestDessin t=new TestDessin(Color.RED, 50,30,300,100);
        jf.getContentPane().add(t);
        jf.setVisible(true);
        JTextField villA = new JTextField("Paris");
        JTextField villD = new JTextField("New York");
        jf.getContentPane().add(villA);
        jf.getContentPane().add(villD);
        villA.setEditable(false);
        villD.setEditable(false);
        villA.setBounds(230,300,100,20);
        villD.setBounds(100,300,100,20);

    }

}

vendredi 12 juin 2009 à 11:48:42 | Re : repaint pour faire défiler un gif?

loloof64

Membre Club
Salut

Je n'ai pas trop analysé ta source, mais j'ai vu que n'as utilisé aucune des techniques suivantes :

*) As tu pensé à regarder du côté de l'utilisation de Threads ?
Je ne peux pas trop t'en parler vu que je ne m'en suis pas trop servi, mais les threads peuvent te permettre de réaliser une tâche de manière périodique.

*) As-tu pensé à regarder du côté de java.util.TimerTask ?

*) Object#wait(long timeOutMilleseconds) ?

Cette dernière est de loin la plus facile à utiliser, mais elle semble aussi la moins pratique

Voilà, la javadoc devrais t'en dire à coup sûr plus que moi .

Salut,
loloof64
vendredi 12 juin 2009 à 11:51:52 | Re : repaint pour faire défiler un gif?

loloof64

Membre Club

Mille excuses, tu dérive l'interface Runnable et tu utilises sleep(long) ...
Désolé pour ma réponse un peu hative.
Dans ce cas là, je ne sais pas trop


Cette discussion est classée dans : int, private, float, offsetx, offsety


Répondre à ce message

Sujets en rapport avec ce message

Erreur d'execution: java.lang.NullPointerException [ par amjad ] A la compilation d'un projet java3D j'obtient le message d'erreur suivant :Exception in thread "main" java.lang.NullPointerException at javax.vecmath C++ -> Java [ par christouilhe ] Bonjour à vous tous.J'ai une question à vous poser ...Il se trouve que je dois retranscrire un programme C++ en Java, mais je ne sais pas du tout comm aide explication paint (tableaux de Hash) [ par Bilouz ] Bon voilà je viens de choper un pgm sympa style paint, juste pour dessiner et effacer le contenu.Par contre je ne comprends pas du tout comment foncti ?Tableau int & float [ par kaliel ] Bonjour à tous !!C'est mon anniversaire mais ca ne m'enpêche pas d'être au boulot et de faire du ..... Java.J'ai une petite question, je voudrais décl Probleme dans mon programme fractale [ par Jarod1980 ] Bonjour tout le monde,J'aurais besoin d'aide pour résoudre un petit problème. J'ai adapté un programme que j'ai fais en C (fractale de Julia) en Java. Probleme avec "possible loss of precision" [ par mleloc ] Bonjour a tous, j'ai un petit probleme avec ce morceau de code:class ZoneDessin extends Canvas{    float charge1;    float abscisse;    Point p;       [urgent]passage de variable entre les class [ par developvbdebut ] Bonjour tout le mondeVoici la class Calculimport javax.swing.*;import java.awt.*;import java.awt.event.*; public class Calcul{< dessin graphique 2d [ par huongthuy ] Bonjour tout le monde! je suis étudiant.j'ai un projet.Le projet demande les fonctions:la fonction linéaire y = ab, la fonction affine y = ax+b, <td c point sur polyligne [ par umafaid ] Bonjour,je réponds à ce forum parce que j'ai un problème assez similaire à ce que gracerare veut faire sauf que comme le recommande bouye, je n'utilis Moteur 3D [ par hallardc ] Je cherche a amélirorer un petit moteur 3D, pour gérer la profondeur des faces de ma pyramides.Ces faces s'affichent n'importe comment.Faut-il faire u


Nos sponsors


Sondage...

Comparez les prix


HTC Hero

Entre 550€ et 550€

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,250 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales