我有一个随机彩色的背景,分为纯色矩形。我想在矩形上画一个网格(这不是问题)。问题是因为随机颜色我不能硬编码网格颜色,因为它可能不会出现。
考虑这个问题的另一种方法是在曲面f(x,y)的图上绘制网格。如果网格颜色恰好与函数的颜色相同(但是已定义),那么它将不可见。
我想拍摄背景颜色并计算与颜色形成对比的新颜色(灰度或与背景颜色相似),以便轻松看到(但不会分散注意力,例如纯黑色上的纯白色)
我尝试过使用亮度和加权亮度,但它并不适用于所有颜色。我也试过伽马校正颜色,但它也不能很好地工作。
我还希望网格颜色尽可能均匀(我可以计算要混合的相邻网格颜色)。这并不重要,但要有一定的统一性会很好。
我正在使用的代码基于
//byte I = (byte)(0.2*R + 0.7*G + 0.1*B);
//byte I = (byte)(R + G + B)/3.0);
byte I = (byte)(Math.Max(Bar.Background.R, Math.Max(Bar.Background.G, Bar.Background.B)));
if (I < 120)
I = (byte)(I + 30);
else
I = (byte)(I - 30);
//I = (byte)(Math.Pow(I/255.0, 1/2.0)*255);
我也尝试过首先对rgb进行伽马校正。
有人有什么想法吗?
答案 0 :(得分:3)
对比度最高的颜色是完全饱和的颜色。这为您提供了一种可以找到可能有用的颜色的方法(但不一定有很多原因)。基本上你选择沿着连接颜色和完全饱和颜色的线最远的颜色。