2011-09-20 79 views
1

我从最近的答案研究这个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设置为不同的值后,没有闪烁的颜色变化。任何人都知道为什么?

回答

1

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

奇怪,但Java医生说不同(H是色调):在S和B组分应该是浮点介于0和1之间的数值(范围在0.0-1.0之间的数字)。 h分量可以是任何浮点数。将该数字的底部从其中减去以创建0和1之间的分数。然后将该分数乘以360以在HSB颜色模型中产生色调角度。 – 5YrsLaterDBA

+0

你是对的:javadoc是错误的。 – woliveirajr