2011-03-24 25 views
7

我需要分配顏色來區分不同的項目。簡單案例:根據客戶訂購不同顏色的行。如何獲得視覺上不同顏色的清單?

我不想讓用戶爲每個客戶選擇一種顏色,我想在運行時進行此操作。

如果有一個客戶,我會用「紅」,如果有兩個「紅」「白」 ......

當然我可以創建自己的GimmeRandomColour(i: index)功能使用iRGB函數來創建好的隨機顏色(但在這種情況下創建漂亮的顏色可能會非常棘手)。或者我可以說,如果i是0給我clRed,...(以這種方式創造許多顏色可能是一個問題)。

如何獲得具有可接受的對比度的「顏色清單」?

+0

不是開箱即用的。這太具體,不能提供內置函數。 – 2011-03-24 10:56:15

+1

創建您自己的調色板,並使用隨機抽樣而無需更換。 – 2011-03-24 12:36:35

回答

7

Delphi中沒有內置函數。 看到這個問題的方式來產生愉快的配色方案。

Algorithm to randomly generate an aesthetically-pleasing color palette

+0

這裏有一些很好的參考。 – 2011-03-24 11:31:56

+0

不錯的鏈接,但正如我在我的問題結束時寫的「隨機」是不正確的。我總是希望給定i的顏色。像情況一樣0結果:= clRed; 1結果:= clBlue; 2 ...但是我想要的東西對於i = 100也是有意義的,即使實際上我會將它用於我<50。當然,我可以對50種顏色進行編碼,因此我確信它可以正常工作。 – LaBracca 2011-03-24 14:41:57

+0

@ user193655對於給定的I,總是得到相同的值,對於每種不同的情況,我使用隨機推薦的算法來生成新顏色並將該顏色與該特定I綁定,以便隨後使用getColorFor(I)獲得相同的顏色。調用。如果您想爲不同的程序運行獲取相同的顏色,請將I = ColorValue綁定存儲在數據庫,註冊表,Ini或配置文件中。 – jachguate 2011-03-24 15:26:29

2

常用的方法是對每個RGB顏色分量使用值$ 00,$ 33,$ 66,$ 99,$ CC和$ FF(Random(6) * $33)。

這將導致216種不同顏色的使用安全。

查看wikipedia的示例。

+0

您的意思是「對於每個RGB **組件**」。 – 2011-03-24 12:16:55

+0

@Andreas,我原本的意思是「對於每種紅色,綠色和藍色」,但縮短了它,但沒有看到新的含義:) **組件**不過是一個更精確的術語。 – 2011-03-24 12:32:04