1

我让用户输入颜色(例如白色、红色、...),那么如何使用用户给出的颜色获得 R、G、B 的值?

我有一个函数(float r,float g,float b)来设置节点的颜色。所以我让用户输入他们想要的颜色名称,然后我想将该颜色名称转换为我的函数的 r、g、b 值。

4

3 回答 3

3

颜色定义了代表基本颜色的有限数量的枚举。此代码摘录使用反射将它们的名称映射到 RGB 表示。

除此之外,您必须维护颜色/RGB 值的映射,或者可能是一组系统属性,并使用Color.getColor(String name)

于 2012-07-31T08:43:29.930 回答
1

创建一个 Map ,其中包含所有可选颜色作为字符串以及它们的 RGB 表示形式(作为记录,Color 位于 java.awt 包中):

Map<String,Color> colorMap = new HashMap<String,Color>();
        colorMap.put("white", new Color(255,255,255));
        colorMap.put("red", new Color(255,0,0));

然后使用用户输入的文本在地图中查找您的颜色:

String userColor = <whereever you get your string from>;
Color result = colorMap.get(userColor.toLowerCase());

最后,使用这个具有 RGB 整数值的 Color 对象来检索您需要的浮点值并将它们传递给您的函数:

yourFunction(Float.valueOf(result.getRed(),Float.valueOf(result.getGreen()),Float.valueOf(result.getBlue()));

如果可能的话,我建议您对 RGB 使用整数而不是浮点数,因为在大多数情况下(如果不是所有情况),整数的范围都在 0 到 255 之间。

使用 RGB 获得您所需要的所有颜色的好地方是这个网站:http ://cloford.com/resources/colours/500col.htm

于 2012-07-31T10:07:35.627 回答
0

如果您将颜色作为字符串,您可以Color在地图中查找它,这将为您提供红色、绿色和蓝色值。

于 2012-07-31T08:41:51.627 回答