我有用戶類型的顏色(例如白色,紅色......),那麼如何用用戶的顏色得到R,G,B的值?通過顏色獲得R,G,B的值
我有一個函數(浮子R,浮克,浮子b)中設置顏色的節點。所以我讓用戶輸入他們想要的顏色名稱,然後我想要將該顏色名稱轉換爲我的函數的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