多种前景色的随机背景颜色

时间:2014-12-20 04:43:44

标签: c# colors high-contrast

我需要生成一种随机背景颜色,这种背景颜色在视觉上令人满意,有三种类型的文字颜色:ARGB(255,255,255,255)ARGB(63,255,255,255)ARGB(255,0,0,0)。颜色为白色,白色,0.25不透明度,黑色。我还没有在SO或其他地方看到一个例子,它将颜色与多种颜色进行比较,以确定它们之间是否存在良好的对比度(仅在两种颜色之间进行比较)。我不完全理解色彩理论,所以我在寻求帮助。

2 个答案:

答案 0 :(得分:1)

对比颜色与白色是任何黑暗。另一方面,对比颜色与黑色是任何黑暗。因此很难选择白色和黑色的对比色。

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

亮度可以用公式计算:

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);

产生的颜色与黑色和白色形成鲜明对比。

答案 1 :(得分:0)

首先,你需要让自己熟悉色彩空间,并决定什么会使随机色彩在视觉上吸引人。颜色基本上可以表示为three components in many different spaces。计算机的首选表示是RGB,其中红色,绿色和蓝色的数量符合颜色。然而,对于人眼来说,HSV(色调,饱和度,值)可能更容易理解。在这个色彩空间中,饱和度代表了饱和度如何“饱和”。是颜色,即灰度范围的饱和度为零,因为它实际上并不代表颜色。值(或强度)将其视为亮度和色调类型,为您提供颜色所属的光谱方向(在彩虹上思考)。 alpha值不是颜色本身的一部分,而是指定特定颜色与背景混合的方式(即生成的颜色计算为前颜色与其alpha分量和背景颜色的加权和)

现在,在选择视觉上吸引人的颜色方面,这种颜色更复杂,更多地取决于每个人的口味。您通常可以通过选择HSV色彩空间中的距离足够大的另一种颜色来获得高对比度颜色。实际上,选择两种成分中的一种相同的颜色(例如相同的饱和度和强度)但色调非常不同会使您获得与原始颜色形成高对比度的颜色。可以找到从RGB到HSV的转换公式,反之亦然here。希望这可以帮助。