2011-09-20 77 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