0

我在 HSV 颜色空间中使用 Java Swing JColorChooser。这个小部件使用微调器来调整颜色。色相是 0-360,饱和度是 0-100,值是 0-100。我只能为组件值取回浮点值。我想在用户选择颜色后在标签中显示组件值,但我不知道如何获得与 JColorChooser 中相同的值。我的代码:

private String getColorString(Color color)
{
    float[] comp = color.getColorComponents(chooser.getColorModel().getColorSpace(),
                                            null);

    return comp[0] + ", " + comp[1] + ", " + comp[2];
}

当我的颜色选择器显示 HSV 为 180,50,50 时,我的组件值为 0.24938,0.49749,0.49793

我意识到我正在从颜色请求一个浮点数组,但是没有诸如 getHue() 之类的方法。

4

2 回答 2

2

Color.RGBtoHSB()使用从选择器获得的 RGB 分量调用, Color如下所示

于 2013-08-12T13:55:53.470 回答
2

要从 jColorChooser 获取 HSB(与 HSV 相同),您可以按以下方式使用 Color.RGBtoHSB()。

Color c = jColorChooser1.getColor();
float[] comp = new float[3];
Color.RGBtoHSB(c.getRed(), c.getGreen(), c.getBlue(), comp);
comp[0]*= 360;
comp[1]*= 100;
comp[2]*= 100;
return  comp[0]+", "+comp[1]+", "+comp[2];

或者在你的方法中你可以像这样实现它

private String getColorString(Color color)
{
    float[] comp = new float[3];
    Color.RGBtoHSB(color.getRed(), color.getGreen(), color.getBlue(), comp);
    comp[0]*= 360;
    comp[1]*= 100;
    comp[2]*= 100;
    return  comp[0]+", "+comp[1]+", "+comp[2];
}

我知道我们给出的值和返回的值有细微的差别,但你不能比这更准确!

于 2013-08-12T14:17:40.040 回答