0

我需要为三种文本颜色生成一种视觉上令人愉悦的随机背景颜色:ARGB(255,255,255,255)ARGB(63,255,255,255)ARGB(255,0,0,0). 颜色为白色、不透明度为 0.25 的白色和黑色。我还没有看到关于 SO 或其他地方的示例,该示例将一种颜色与多种颜色进行比较以确定它们之间是否存在良好的对比度(仅在两种颜色之间进行比较)。我不完全了解颜色理论,所以我正在寻求帮助。

4

2 回答 2

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

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

于 2014-12-20T19:19:31.443 回答
0

首先,您需要让自己熟悉色彩空间,并决定什么会使随机颜色具有视觉吸引力。一种颜色基本上可以表示为许多不同空间中的三个分量. 计算机的首选表示是 RGB,它是与颜色一致的红色、绿色和蓝色的数量。然而,对于人眼来说,HSV(色调、饱和度、值)可能更容易理解。在这个颜色空间中,饱和度表示颜色的“饱和度”程度,即灰度范围的饱和度为零,因为它实际上并不代表颜色。该值(或强度)将其视为亮度和色调,可以为您提供颜色所属的光谱方向(想想彩虹)。alpha 值不是颜色本身的一部分,而是指定特定颜色如何与背景混合(即,生成的颜色计算为正面颜色与其 alpha 分量和背景颜色的加权和)

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

于 2014-12-20T05:23:49.283 回答