java - 在java中使用HSB创建平滑渐变
问题描述
我正在尝试在greenfoot java中创建一个排序算法可视化器,数组显示为柱形图。我希望它色彩鲜艳,所以我使用了这个视频中所示的颜色渐变https://www.youtube.com/watch?v=qlvBsYyGIDo
这是非工作代码:
Pseudocode{
int[50] arr={1,2,3...}
for(int i:arr)
rect.color=getColor(i,arr.length)
}
private static Color getColor(int value, int length){
float h=((float)value/(float)length);//goes from 0-1
System.out.println(value+" "+length+" "+h);
java.awt.Color rgb=java.awt.Color.getHSBColor(h,255,255);
int r=rgb.getRed();
int g=rgb.getGreen();
int b=rgb.getBlue();
System.out.println(rgb+" "+r+" "+g+" "+b);
return new Color(r,g,b);//greenfoot.Color, not java.awt.Color
}
如何从红色->黄色->绿色->青色->蓝色->洋红色创建平滑渐变?
解决方案
谢谢@Thomas。结果是 Color.getHSBColor() 的所有三个值都在 0-1 范围内,高于该值的值会产生〜未定义的行为〜。
推荐阅读
- crystal-lang - 如何在 Crystal 的宏中合并 NamedTuples?
- python - Tensorflow 的教程 GAN 不适用于 CIFAR-10
- pandas - 查找具有相似但变化值的多个数据帧行的平均值的最有效方法
- python - ValueError:int() 的无效文字,基数为 10:'category'
- node.js - Google Cloud Platform 发布/订阅 - 消息未传递给订阅者
- javascript - 如何避免 toDataURL 在 window.onload 之前执行
- flutter - Flutter SlideTransition 从 Offset OFF SCREEN 开始
- javascript - 我用于触发 IFTTT Webhook 的“iframe”按钮适用于 Chrome,但不适用于 Firefox,是否有更正确/面向未来的方法?
- amazon-web-services - 限制每个 IAM 用户的 S3 数据大小的 AWS 策略
- regex - 正则表达式从不同格式的字符串中查找数字