java - 褪色算法?

标签 java swing user-interface colors

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

但是,这会循环遍历所有颜色(即尝试从蓝色逐渐淡入绿色,循环经过黄色、橙色、红色等)。是否有一种合适的算法/方法可以直接从一种颜色淡入另一种颜色?

编辑:我已经通过 Swing Timer 对其进行了更新(我尽量避免像瘟疫一样接触带有线程的组件)。今晚我会尝试听取您的建议,谢谢大家!

最佳答案

基于此example , Queue<Color>以下循环来自 Color.greenColor.blue回到Color.green再次在 N = 32脚步。注意 Color.green在数值上小于 Color.blue在 HSB 模型中。另见此相关 example使用 HSB。

enter image description here

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));
    }
}

关于java - 褪色算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13223065/

相关文章:

python - 如何使用 Tkinter 创建文件选择器?

c++ - 放大 Qt 小部件,使其覆盖其他小部件

java - 如何随时按 e 退出游戏?

java - JAX-WS 网络服务 : Beans not injected : NullPointerException

java - 设置JFrame背景,为什么这不起作用?

java if语句文本提示不起作用

c++ - Windows 服务停留在启动状态

java - 设计一个在数组中存储可比对象的通用类

java - 尝试从 URI 获取文件名时出现致命的运行时异常

Java:第二个窗口是空白的