2014-12-20 31 views
0

我需要生成一種隨機背景色,這種背景色在視覺上符合三種文本顏色:ARGB(255,255,255,255)ARGB(63,255,255,255)ARGB(255,0,0,0)。顏色是白色的,白色爲0.25不透明度,黑色。我還沒有在SO或其他地方看到一個比較顏色和多種顏色的例子來決定它們之間是否有良好的對比(比較僅在兩種顏色之間完成)。我不完全瞭解色彩理論,所以我在尋求幫助。多種前景色的隨機背景色

+0

我建議隨機挑選並測量距離。 – Jasen

+0

試試看這裏:http://24ways.org/2010/calculating-color-contrast/ – Icemanind

回答

0

首先,您需要熟悉色彩空間並決定使隨機色彩在視覺上吸引人的地方。顏色基本上可以表示爲three components in many different spaces。計算機的首選代表是RGB,紅色,綠色和藍色的數量與顏色相符。然而,對於人眼而言,HSV(色調,飽和度,值)可能更容易理解。在該顏色空間中,飽和度表示顏色是如何「飽和」的,即灰度範圍的飽和度爲零,因爲它實際上不表示顏色。價值(或強度)認爲它的亮度和色調類型可以讓你知道顏色屬於哪個方向的光譜(想象一下彩虹)。 alpha值不是顏色本身的一部分,而是指定特定顏色如何與背景混合(即,生成的顏色是通過其前景色的alpha分量和背景色計算的加權和)

現在在選擇一個更復雜的視覺上吸引人的顏色方面,更多地取決於每個人的口味。通常您可以通過選擇HSV顏色空間中距離足夠大的另一種顏色來獲得高對比度顏色。事實上,選擇具有相同顏色(例如相同飽和度和強度)但顏色差異很大的顏色會給您一種與原始顏色形成高對比度的顏色。從RGB到HSV和反之亦然的轉換公式可以在here找到。希望這可以幫助。

0

與白色對比的顏色是黑暗的。另一方面,與黑色對比的顏色是任何黑暗的。所以很難選擇白色和黑色的對比色。

它可能是一些平均灰色或任何其他顏色具有相同的亮度。

亮度可以用公式來計算:

int brightness = (int)(0.30 * red + 0.59 * green + 0.11 * blue); 

讓固定brightness值進行平均(即128),然後隨機選擇red​​和值。然後,我們可以計算出blue

var random = new Random(); 
var red = random.Next(256); 
var green = random.Next(256); 
var blue = (int)(128 - 0.30 * red - 0.59 * green); 

產生的顏色是相當的對比黑色和白色兩種。