2012-05-11 5 views
1

Quelqu'un pourrait-il aider avec le changement progressif de la couleur du composant. Je veux la couleur à changer pourjava changer la couleur du contrôle progressivement

new Color(255,0,0) 

à

new Color(0,0,0) 

essayé différentes variantes avec des minuteries, mais reste bloqué. Et btw est-ce la bonne façon de le faire avec des minuteries?

Merci d'avance!

+1

hadn Vous n'avez pas encore entendu parler de [JLayer] (http://docs.oracle.com/javase/tutorial/uiswing/misc/jlayer.html)? :-) –

+0

@nIcEcOw Comme OP prévoit d'aller avec votre suggestion (lire de son commentaire sur une réponse), il est bon de l'afficher comme réponse :-) – COD3BOY

+0

@Sanjay: Suis-je supposé écrire un seul mot? J'aurais pu donner cela comme une réponse, bien que @@ PerryMonschau, dans sa réponse avait fait un travail acharné, et une réponse d'un mot est ce que mon conscient ne me permet pas. Donc, je suis confus :(mais celui qui peut fournir un exemple aussi, sur les lignes données peut certainement afficher cela comme une réponse –

Répondre

4

S'il vous plaît n'envisager d'utiliser JLayer comme une alternative pour votre quête :-)

4

Quelque chose le long de ces lignes:

Color before = new Color(255,0,0); 
Color after = new Color(0,0,0); 
Color current = before; 
int maxtime = 1000; 
int step = 0; 

public void step() 
{ 
    if(step == maxtime) 
     return; 
    step++; 
    double percentComplete = step/maxtime; 
    double percentGone = 1-percentComplete; 
    int red = (int)(before.getRed()*percentGone+after.getRed()*percentComplete); 
    int green = (int)(before.getGreen()*percentGone+after.getGreen()*percentComplete); 
    int blue = (int)(before.getBlue()*percentGone+after.getBlue()*percentComplete); 
    int alpha = (int)(before.getAlpha()*percentGone+after.getAlpha()*percentComplete); 
    current = new Color(red, green, blue, alpha); 
    //set component's color to current 
} 

Remarque, vous devrez peut-être faire quelques vérifications pour vous assurer rouge vert et bleu ne dépassent pas 255, mais je ne suis pas encore sûr.

(cette fonction doit appartenir à la composante dont la couleur vous changez, vous devez appeler cela sur chaque tick timer)

+0

merci pour votre contribution, mais je pense que je vais utiliser Jlayer, comme suggéré par @nIcE cOw. –

+0

: D Je ne le savais pas non plus. –

+0

Ces calculs peuvent être plus faciles dans le modèle de couleur HSB, montré [ici] (http://stackoverflow.com/a/10542850/230513). – trashgod

Questions connexes