2009-05-20 85 views
1

在我的網絡應用程序中,我有一個聊天室。我希望每個用戶的名字都有不同的顏色,而不是全部使用黑色。達到此目的的最佳方法是什麼?我應該爲每個用戶存儲RGB/HEX代碼,因爲他們註冊到我的應用程序並將該字符串作爲字段作爲其數據庫中記錄的一部分?每個用戶的獨特顏色

回答

0

特別是使用色相值從HSV/HSL生成顏色。然後轉換爲RGB。

See my answer here for more information on HSV/HSL

你可能想盡可能的顏色每次不同。

你可以通過保持顏色範圍的隊列來做到這一點。

如果隊列爲空,則返回色相0並將該對(0,360)插入到隊列中。 下一次你想要一個顏色彈出隊列中的元素(0,360),並返回這些值之間的中點:180.然後將(0,180)和(180,360)推入隊列。

下一次你想要一個顏色彈出隊列中的元素(0,180),並返回這些值之間的中點:90.然後將(0,90)和(90,180)推入隊列。

下一次你想要一個顏色彈出隊列中的元素(180,360),並返回這些值之間的中點:270.然後將(180,270)和(270,360)推入隊列。

繼續這個過程......

您將自動獲得儘可能區分顏色爲每個用戶。

6

我有一個固定的顏色列表,讓用戶從中選擇並在數據庫中存儲索引,1 = red,2 = green等。這將允許您更改每種顏色的陰影以匹配設計您的網站隨着它的發展。

例如,您可能希望「紅色」與您的徽標匹配相同的紅色;如果您已將此值存儲爲數據庫中的RGB值而不是「紅色」,則更改難度會更大。

+3

該解決方案限制了用戶的選擇,並阻止他們選擇像白色或亮粉色的傻東西。它非常靈活,以便您可以稍後添加其他顏色 – Tom 2009-05-20 11:46:55

2

如果您的目標是讓用戶在聊天室內一目瞭然,這取決於您的用戶羣有多大。如果一個聊天室的平均大小是10,但是你的用戶基數是幾千,那麼爲他們每個人分配一個獨特的顏色是行不通的。最終你會在相同的聊天室中看到相同顏色的稍微不同的陰影。

在這種情況下,只保留一個明顯不同顏色的簡短列表,並將它們分配到單個聊天室中。

1

作爲替代你的計劃:

你可以不喜歡它IRSSI(和其他人),只是指定顏色基於散列(使用你選擇的功能)的屏幕缺口的。在這個系統下,缺口和顏色的長度(應該/將會)是不相關的,所以不同字母,不同屏幕名稱和不同顏色的組合應該足以使得事物可區分,但是在會話之間是一致的。在這個方案中,你可能必須緩存的這個唯一的東西是,因爲會話是每個用戶名的顏色,所以你不必做很多md5調用。這並不能保證每個用戶都有不同的顏色(遠離它),也許你應該考慮你試圖用這個規範達到的目的。

相關問題