2014-12-20 33 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); 

产生的颜色是相当的对比黑色和白色两种。