int colorInt = 41;
int color = Color.HSBtoRGB(colorInt, 1f, 1f);
System.out.print(color);
不要緊,什麼顏色,它總是返回 -65536
的Java轉換0-255 INT-RGB色
有什麼辦法解決這一問題?
int colorInt = 41;
int color = Color.HSBtoRGB(colorInt, 1f, 1f);
System.out.print(color);
不要緊,什麼顏色,它總是返回 -65536
的Java轉換0-255 INT-RGB色
有什麼辦法解決這一問題?
float hue = 0.533f, saturation = 0.36667f, brightness = 0.535f;
int color = Color.HSBtoRGB(hue, saturation, brightness);
int red = (color >> 16) & 0xFF;
int green = (color >> 8) & 0xFF;
int blue = color & 0xFF;
System.out.println(color + " " + red + " " + green + " " + blue);
您正在傳遞不正確的參數並介意參數的範圍。
飽和度和亮度分量應該是浮點數 0和1之間的數值(數字在0.0-1.0範圍內)。色相 組件可以是任何浮點數。從中減去此編號 的底線以創建0和1之間的分數。然後將該分數編號乘以360以產生HSB顏色模型中的色相角 。
由HSBtoRGB返回的整數編碼的彩色 的一個整數值,是由 方法的getRGB使用的格式相同的比特0-23的值。此整數可以作爲參數提供給採用單個整數參數的Color構造函數。
檢查該參考文獻:https://docs.oracle.com/javase/7/docs/api/java/awt/Color.html#HSBtoRGB(float,%20float,%20float)
正如我在我的意見指出的,色調,飽和度和亮度的值應在的範圍內漂浮0到1
(其在 Javadoc for this method解釋)該代碼將告訴你一個整體的色輪(每度從0到360)與特定的飽和度和亮度:
public static void main(String[] args) {
float saturation = 0.8f;
float brightness = 0.7f;
for (int degree = 0; degree < 360; degree++) {
int color = Color.HSBtoRGB(degree/360f, saturation, brightness);
System.out.format("%3d %6.4f #%06x\n", degree, degree/360f, color & 0xffffff);
}
}
請閱讀[該方法的的Javadoc](HTTPS://文檔。首先是oracle.com/javase/8/docs/api/java/awt/Color.html#HSBtoRGB-float-float-float-)。您提供的參數不正確。基本上所有的參數都應該在0到1範圍內漂浮,儘管色相也可以是更大的數字,但只考慮小數部分。 –
您的編輯無法解決問題;你的色調值仍然是一個整數 - 它應該是從零到1的分數(如0.1f,0.2f,0.3f等)。然後你會看到不同的返回值。 –