通过颜色获得R,G,B的值

问题描述:

我有用户类型的颜色(例如白色,红色......),那么如何用用户的颜色得到R,G,B的值?通过颜色获得R,G,B的值

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

+0

我有一个函数(浮动R,浮克,浮B)设置颜色的节点。所以我让用户输入他们想要的颜色名称,然后我想要将该颜色名称转换为我的函数的r,g,b值。 – user1565134 2012-07-31 08:51:03

+0

*“所以我让用户输入他们想要的颜色名称”* [Chartreuse](http://en.wikipedia.org/wiki/Chartreuse_%28color%29),任何人?改为向用户提供['JColorChooser'](http://docs.oracle.com/javase/7/docs/api/javax/swing/JColorChooser.html)。 – 2012-07-31 10:01:06

如果你有一个字符串可以查找这个Color在一张地图,这会给你的红色,绿色和蓝色值的颜色。

+0

@Mthethew为更正而欢呼。 – 2012-07-31 08:44:12

+0

我有一个函数(float r,float g,float b)来设置一个节点的颜色。所以我让用户输入他们想要的颜色名称,然后我想要将该颜色名称转换为我的函数的r,g,b值。 – user1565134 2012-07-31 08:50:53

+0

您还需要设置颜色。您可以将这些信息存储在一个Map 中,以便稍后查找这些值。顺便说一句,通常每个红色,绿色,蓝色是介于0和255之间的值。 – 2012-07-31 09:16:23

颜色限定有限号表示基本色枚举。 This code excerpt使用反射来从它们的名称映射到RGB表示。

除此之外,你必须保持地图的颜色/ RGB值的,也可能是系统属性的集合,并使用Color.getColor(String name)

+0

我有一个函数(float r,float g,float b)来设置节点的颜色。所以我让用户输入他们想要的颜色名称,然后我想要将该颜色名称转换为我的函数的r,g,b值。 – user1565134 2012-07-31 08:49:26

创建一个包含所有可选的颜色与它们的RGB表示字符串连接在一起的映射(根据记录,颜色是在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()); 

最后,使用具有int类型此Color对象的RGB检索您需要的浮点值,并将其传递给你的函数:

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

如果可能的话我会建议使用整数,而不是浮点数为你的RGB,因为它会如果不是所有情况下的范围从0到整数255中最。

一个好地方,让你在任何时候需要与他们的RGB的所有颜色是这个网站:http://cloford.com/resources/colours/500col.htm

+0

将颜色通道表示为float,尽管可能不是如此,但可提供24位精度(*每个通道*)。仅仅因为十进制表示看起来不准确,这并不意味着它在计算机使用它时会产生不准确的结果。事实上,对于8位通道值的转换int float是完全可逆的。 – Durandal 2012-07-31 12:11:56

+0

我同意这样更准确,但是对于颜色的每个可能的十进制值,你有一个逻辑名吗?由于人们实际使用的逻辑颜色名称数量有限,因此在这种情况下我会使用整数。更小,更容易阅读,并生成更易读的代码,因为您可以省略Java的awt的所有解析。将int值赋予相应的浮点值。 – Massis87 2012-07-31 20:22:24