多种前景色的随机背景色

本文关键字:随机 背景色 前景色 | 更新日期: 2023-09-27 18:34:43

我需要为三种类型的文本颜色生成一种视觉上令人愉悦的随机背景颜色: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(,并随机选择red值并green值。然后我们可以计算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和viceversa的转换公式可以在这里找到。希望这有帮助。