start-process -FilePath D:\versioned\pf_trunk\deployment\environments\development\aws\deployment\awx\development\files\PublishMYPlanetFootprint.bat -Wait
颜色是什么并不重要,它总会返回
int colorInt = 41;
int color = Color.HSBtoRGB(colorInt, 1f, 1f);
System.out.print(color);
有什么方法可以解决这个问题吗?
答案 0 :(得分:0)
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)。色调 component可以是任何浮点数。这个号码的楼层 从中减去它以创建0到1之间的分数 然后将小数乘以360以产生色调角 在HSB颜色模型中。
HSBtoRGB返回的整数对颜色的值进行编码 在整数值的0-23位,与...使用的格式相同 方法getRGB。这个整数可以作为参数提供给 采用单个整数参数的颜色构造函数。
请查看此参考:https://docs.oracle.com/javase/7/docs/api/java/awt/Color.html#HSBtoRGB(float,%20float,%20float)
答案 1 :(得分:0)
正如我在评论中指出的那样,色调,饱和度和亮度的值应该在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);
}
}