通过颜色获得R,G,B的值
我有用户类型的颜色(例如白色,红色......),那么如何用用户的颜色得到R,G,B的值?通过颜色获得R,G,B的值
我有一个函数(浮子R,浮克,浮子b)中设置颜色的节点。所以我让用户输入他们想要的颜色名称,然后我想要将该颜色名称转换为我的函数的r,g,b值。
如果你有一个字符串可以查找这个Color
在一张地图,这会给你的红色,绿色和蓝色值的颜色。
@Mthethew为更正而欢呼。 – 2012-07-31 08:44:12
我有一个函数(float r,float g,float b)来设置一个节点的颜色。所以我让用户输入他们想要的颜色名称,然后我想要将该颜色名称转换为我的函数的r,g,b值。 – user1565134 2012-07-31 08:50:53
您还需要设置颜色。您可以将这些信息存储在一个Map
颜色限定有限号表示基本色枚举。 This code excerpt使用反射来从它们的名称映射到RGB表示。
除此之外,你必须保持地图的颜色/ RGB值的,也可能是系统属性的集合,并使用Color.getColor(String name)。
我有一个函数(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
将颜色通道表示为float,尽管可能不是如此,但可提供24位精度(*每个通道*)。仅仅因为十进制表示看起来不准确,这并不意味着它在计算机使用它时会产生不准确的结果。事实上,对于8位通道值的转换int float是完全可逆的。 – Durandal 2012-07-31 12:11:56
我同意这样更准确,但是对于颜色的每个可能的十进制值,你有一个逻辑名吗?由于人们实际使用的逻辑颜色名称数量有限,因此在这种情况下我会使用整数。更小,更容易阅读,并生成更易读的代码,因为您可以省略Java的awt的所有解析。将int值赋予相应的浮点值。 – Massis87 2012-07-31 20:22:24
我有一个函数(浮动R,浮克,浮B)设置颜色的节点。所以我让用户输入他们想要的颜色名称,然后我想要将该颜色名称转换为我的函数的r,g,b值。 – user1565134 2012-07-31 08:51:03
*“所以我让用户输入他们想要的颜色名称”* [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