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等)。然后你会看到不同的返回值。 –