生成易于在白色字体上阅读的颜色的算法



给定HSV或RGB,是否有一种算法可以产生随机颜色的背景,保证在纯白色字体上可读?

它不必是特定于语言的实现,尽管我使用c#。

感谢

这是我做的,但我相信它可以改进:

   public static System.Drawing.Color GenerateRandomLiteColor()
        {
            var rnd = new Random(DateTime.Now.Millisecond);
            double mul = 240.0;
            HSLColor c = new HSLColor(rnd.NextDouble() * mul,
                ((rnd.NextDouble() * 0.6) + 0.5) * mul, ((rnd.NextDouble() * 0.35) + 0.5) * mul);
            string s = c.ToRGBString();
            return c;
        }

使用HSL,你可以说L低于一定值的任何东西都是可见的,它有足够的暗度来获得足够的对比度。但这是一种主观价值。你可以让H和S随机。HSL可以转换为HSV或RGB。

L不应该是随机的。或者它可能只是在您预定义的范围内,以提供足够的对比度。

对于RGB,有一个计算颜色亮度的公式:

0.299 * R + 0.587 * 0.114 G + * B

如你所见,R、G、B的每一种颜色都有自己的亮度系数。要在白色背景上生成可读字体,请生成完全随机的颜色。然后检查它的亮度是否小于某个预定义的常数C。如果超过C,等于某个D>C,则R、G、B值分别乘以C/D,使亮度等于C

最新更新