簡體   English   中英

多種前景色的隨機背景色

[英]Random background color for multiple foreground colors

我需要為三種類型的文本顏色生成一種視覺上令人愉悅的隨機背景顏色: ARGB(255,255,255,255)ARGB(63,255,255,255)ARGB(255,0,0,0) 顏色為白色、不透明度為 0.25 的白色和黑色。 我還沒有看到一個關於 SO 或其他地方的例子,將一種顏色與多種顏色進行比較,以確定它們之間是否存在良好的對比度(僅在兩種顏色之間進行比較)。 我不完全了解顏色理論,所以我正在尋求幫助。

與白色形成對比的顏色是任何深色。 另一方面,與黑色形成對比的顏色是任何光。 因此,很難選擇與白色和黑色形成對比的顏色。

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

亮度可以用這個公式計算:

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

讓我們將brightness值固定為平均值(即 128),並隨機選擇redgreen值。 然后我們可以計算blue

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

由此產生的顏色與黑色和白色形成鮮明對比。

首先,您需要讓自己熟悉色彩空間,並決定如何使隨機顏色具有視覺吸引力。 一種顏色基本上可以表示為許多不同空間中的三個分量 計算機的首選表示是 RGB,其中紅色、綠色和藍色的數量符合顏色。 然而,對於人眼來說,HSV(色調、飽和度、值)可能更容易理解。 在這個顏色空間中,飽和度表示顏色的“飽和度”,即灰度范圍的飽和度為零,因為它實際上並不代表顏色。 值(或強度)將其視為亮度,而色調則為您提供顏色所屬的光譜方向(想想彩虹)。 alpha 值不是顏色本身的一部分,而是指定特定顏色如何與背景混合(即,結果顏色計算為正面顏色與其 alpha 分量和背景顏色的加權和)

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM