1

任何人都可以帮助组件渐变颜色变化。我想改变颜色

new Color(255,0,0)  

new Color(0,0,0)  

尝试了不同的计时器变体,但卡住了。顺便说一句,用计时器来做这件事是正确的方法吗?

提前致谢!

4

2 回答 2

4

这些方面的东西:

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
}

请注意,您可能需要进行一些检查以确保红色绿色和蓝色不超过 255,但我还不确定。

(这个函数应该属于你正在改变颜色的组件,你应该在每个计时器滴答声中调用它)

于 2012-05-11T09:08:06.680 回答
4

请考虑使用JLayer作为您的任务的替代方案 :-)

于 2012-05-11T10:34:21.093 回答