2010-06-02 54 views
0

我正在提供一個允許用戶輸入顏色(例如紫色)的功能,它會將其配置文件的外觀更改爲紫色。它從文本解釋爲一個'Color'類,它將它們作爲RGB數字存儲在自己內部(int爲紅色,一個爲綠色,另一個爲藍色)。我不知道該怎麼做是邏輯上將這三個數字轉換成另一個3,這將使可讀的顏色。從RGB生成可讀的顏色?

任何人都可以幫助我如何做到這一點?

Joe

+0

退房這個問題:http://stackoverflow.com/questions/946544/good-text-foreground-color-for-a-given-background-color – 2010-06-02 19:24:37

+0

@Mark謝謝你的幫助!請將其張貼爲答案:) – 2010-06-02 19:32:40

回答

1

顯然,沒有每個可能的RGB組合的名稱!想必你想找到附近的組合,你指定了一個名字?

所以你真正需要的是定義一個RGB如何「接近」到另一個RGB的方式。爲簡單起見,我將建議歐幾里德距離平方,即(R2-R1)^ 2 +(G2-G1)^ 2 +(B2-B1)^ 2。然後,您只需遍歷所有「已命名」的顏色,然後找到最小距離的顏色。

+0

@Joe Simpson:噢,請牢記,通過「可讀」,你的意思是「易讀」,如「我想生成一個給定任意背景顏色的清晰的前景色」? – 2010-06-02 19:33:55

+0

所以它是可讀的呀 – 2010-06-02 19:36:33

0

您可以查看X11附帶的rgb.txt文件。

解析器可以提供這些字符串之間的轉換,並且RGB值不會非常難以構建,並且可能會做你正在尋找的東西。

+0

對不起,但我的解析器已經可以拿起許多顏色的名字和方法 – 2010-06-02 19:28:12

+0

@Joe那麼你的問題到底是什麼呢?你能詳細說明嗎? – 2010-06-02 19:32:00

+0

我想把我已經解析過的RGB值變成可讀的顏色 – 2010-06-02 19:33:38

0

正如其他人已經說過,有1670萬可能的組合,所有這些組合顯然不能有一個定義的名稱。

你不會詳細討論你的用例,但是如果你想讓它最終用戶友好,那麼使用百分比怎麼樣?

80% red, 50% green, 23% blue 

這對於非技術人員來說也是完全可以理解的。如果您使用整數百分比值,您將限制(從256^3到100^3)可能性的數量,但不會將用戶限制在固定的指定顏色的調色板上。

+0

當javascript可用時,我將添加一個javascript顏色選擇器 – 2010-06-02 19:31:06