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

AWT/Swing Java Discussion :

Méthode pour changer la couleur d'un objet dynamiquement


Sujet :

AWT/Swing Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Points : 23
    Points
    23
    Par défaut Méthode pour changer la couleur d'un objet dynamiquement
    Bonjour, je suis en train de me coder une petite application pour un cours et je me demandais comment je pouvais changer intelligemment la couleur de cercle que je crée au fil du temps, un peu comme dans cette application : http://apricot.polyu.edu.hk/~lam/dla/dla.html (quand on click sur grow)


    Le constructeur de mes rond :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public Ball(int x, int y, int cycle) {
    	m_x = x;
            m_y = y;
            m_cycle = cycle;
    	}
    Ma première idée était de passer directement par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void draw(Graphics g, int max) {
            g.setColor(new Color((m_cycle*255)/max,0,0));
            g.fillOval(m_x, m_y, 10, 10);
        }
    max étant le nombre de rond dans mon dessin.

    Histoire d'avoir ici par exemple un dégradé de rouge (noir au rouge)

    Mais la je ne fais que du dégradé, l'idée étant de pouvoir le faire en passant par plusieurs couleurs (que ça soit joli comme dans l'applet mis au dessus)

    Je pense aussi à l'idée de mettre les couleurs dans un tableau et ensuite de parcourir les tableaux mais je demandais si y avait pas un peu plus pratique ou "smart".

    Voilà, je vous remercie d'avance pour vos réponses. (Topic pas très important mais ça me tracasse quand même ^^)

  2. #2
    Expert confirmé
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Points : 4 539
    Points
    4 539
    Par défaut
    Bonjour,

    Citation Envoyé par Kalmos2 Voir le message

    Je pense aussi à l'idée de mettre les couleurs dans un tableau et ensuite de parcourir les tableaux mais je demandais si y avait pas un peu plus pratique ou "smart".
    Oui, tu peux utiliser un tableau mais le nombre de couleur sera un peu restreint, tu peux donc procéder de cette façon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    java.util.Random alea = new java.util.Random(System.currentTimeMillis());
     
                    Color couleur = new Color(Math.abs(alea.nextInt()) % 256,
                               Math.abs(alea.nextInt()) % 256,
                               Math.abs(alea.nextInt()) % 256);

  3. #3
    Membre éprouvé
    Homme Profil pro
    Ingénieur 3D
    Inscrit en
    Avril 2008
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur 3D

    Informations forums :
    Inscription : Avril 2008
    Messages : 400
    Points : 968
    Points
    968
    Par défaut
    La technique du tableau est tout a fait acceptable. Mais si vraiment tu l'aimes pas et que tu veux un degradé avec plus de couleurs, je te conseille de passer dans l'espace couleurs HSV et de jouer sur le H comme tu jouais sur le R. Apres, tu convertis ta couleur HSV en RGB et ca devrait te faire un arc en ciel.

  4. #4
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    En trichant.

    C'est à dire en ayant un bon vieux RadialGradientPaint (pas si vieux que ça, ça date de java6) faisant la taille de ton composant, de le dessiner en fond (via un rectangle quelconque). Attention, les paint ne sont utilisables qu'avec les Graphics2D en utilisant la méthode setPaint.
    Puis en utilisant les modes de composition de java (via les diverses options de la classe AlphaComposite) pour que le gradient ne soit affiché que dans les ronds que tu dessineras.

    Pour en savoir plus sur les modes de composition disponibles dans java: http://download.oracle.com/javase/tu...mpositing.html


    De fait tu n'auras pas à te soucier de la couleur de chaque cercle. juste de dessiner les cercles .
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

Discussions similaires

  1. [2D/3D] Bouton pour changer la couleur d'un objet 3D
    Par elwess dans le forum Qt
    Réponses: 1
    Dernier message: 21/02/2012, 09h29
  2. Réponses: 3
    Dernier message: 01/06/2006, 09h49
  3. Algo pour déterminer la couleur d'un objet
    Par Nath71 dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 26/04/2005, 01h58
  4. Aide pour changer de couleur sur les primitifs GLUT
    Par romainhoarau2764 dans le forum GLUT
    Réponses: 3
    Dernier message: 19/03/2005, 13h30
  5. changer la couleur d'un objet existant
    Par Mandalar dans le forum Tkinter
    Réponses: 4
    Dernier message: 02/03/2005, 21h09

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