如何改变颜色的HSB色彩系统
问题描述:
我从最近的答案研究这个post如何改变颜色的HSB色彩系统
的示例代码,看看如何做一个好闪烁按钮。该样本代码使用以下代码来指定的颜色:
for (int i = 0; i < N; i++)
{
clut.add(Color.getHSBColor(1, 1 - (i/N), 1));
}
for (int i = 0; i < N; i++)
{
clut.add(Color.getHSBColor(1, i/N, 1));
}
Color.getHSBColor(1,1 - (I/N),1)是构建的颜色的地方。 getHSBColor()的第一个参数(Hue)将指定基本颜色。所以,如果我将其更改为,颜色应该是蓝色基于颜色;如果是,颜色应该是黄色的依据。但示例程序无法正常工作。在将Hue设置为不同的值后,没有闪烁的颜色变化。任何人都知道为什么?
答
Color.getHSBColor()
应该接受浮点数从0到1,所以大于1的任何值将被当作1 ...
请看:
色调参数是一个十进制数在0.0和1.0之间,表示颜色的色调。您必须尝试使用色相数字来找出它所代表的颜色。
例如,setPenColor(Color.getHSBColor(0.56f,1.0f,0.8f));
来源:http://www.otherwise.com/Lessons/ColorsInJava.html
例如,你可以这样做:
float hue = your_color/255; // if you want to use 0-255 range
for (int i = 0; i < N; i++) {
clut.add(Color.getHSBColor(hue, 1 - (i/N), 1));
}
for (int i = 0; i < N; i++) {
clut.add(Color.getHSBColor(hue, i/N, 1));
}
奇怪,但Java医生说不同(H是色调):在S和B组分应该是浮点介于0和1之间的数值(范围在0.0-1.0之间的数字)。 h分量可以是任何浮点数。将该数字的底部从其中减去以创建0和1之间的分数。然后将该分数乘以360以在HSB颜色模型中产生色调角度。 – 5YrsLaterDBA
你是对的:javadoc是错误的。 – woliveirajr