色彩衰落算法?

Mic*_*man 3 java user-interface swing colors

我正在创建一些我希望从一种颜色淡化到另一种颜色的自定义Swing组件.目前我正在从RGB转换为HSB,然后通过Hue值递增并在绘画之前转换回RGB,工作正常.

然而,这会循环所有颜色(即尝试从蓝色渐变为绿色循环,通过黄色,橙色,红色等).是否有一种不错的算法/方法可以直接从一种颜色淡入另一种颜色?

编辑:我已经通过Swing Timer对其进行了更新(我尝试避免使用像瘟疫这样的线程来触摸组件).今天晚上我会和你的建议一起去,谢谢!

tra*_*god 5

基于此实施例中,Queue<Color>从下面循环Color.greenColor.blue并返回到Color.green再次N = 32步骤.注意,它Color.green在数值上小于Color.blueHSB模型.另请参阅使用HSB的相关示例.

在此输入图像描述

public Flash(JComponent component) {
    this.component = component;
    float gHue = Color.RGBtoHSB(0, 1, 0, null)[0];
    float bHue = Color.RGBtoHSB(0, 0, 1, null)[0];
    for (int i = 0; i < N; i++) {
        clut.add(Color.getHSBColor(gHue + (i * (bHue - gHue) / N), 1, 1));
    }
    for (int i = 0; i < N; i++) {
        clut.add(Color.getHSBColor(bHue - (i * (bHue - gHue) / N), 1, 1));
    }
}
Run Code Online (Sandbox Code Playgroud)