java - JColorChooser 将色调、饱和度和值表示为整数。如何从 Color 对象获取这些值?

标签 java swing colors hsv jcolorchooser

我在 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

我意识到我正在从颜色请求 float 组,但没有诸如 getHue() 之类的方法。

最佳答案

要从 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];
}

我知道我们给出的值和返回的值存在微小差异,但您不能比这个更准确!

关于java - JColorChooser 将色调、饱和度和值表示为整数。如何从 Color 对象获取这些值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18187593/

相关文章:

java - 有没有办法通过java sdk指定训练短语中的哪些单词满足Dialogflow中的槽

java - 如何在另一个模态 JDialog 之上创建一个模态 JDialog

java - 尝试用java制作一个文本编辑器

c++ - OpenCV C++ : Convert RGBA to HSL and then split channels

javascript - D3 转换条形图

java - 为 JTable 中的 JCheckBox 单元格设置颜色

java - 滑动时的Android Scrollable Tabs + Swipe状态

Java 11 : Execution default-compile of goal org. apache.maven.plugins :maven-compiler-plugin:3. 8.0 :compile failed.:NullPointerException

java - JSP 准备插入语句

java - 制作可清洁绘图区域的最小方法