Kon*_*rus 12
"最好的颜色"是非常主观和依赖于背景的.这取决于你想要的效果:如果你想要尽可能高的对比度,寻找互补色(绿色为红色,蓝色为黄色等).如果你想要"相似"的颜色,寻找类似的和声.如果你只想决定黑色和白色,测量亮度(hamstergene为它发布了一个非常好的公式).
无论您走到哪里,HSV颜色模型都是关键.
获得互补或类似的颜色是微不足道的(例如hue_text = (hue_bg + 180) % 360
OR hue_text = (hue_bg + 30) % 360
).
您还可以尝试使用值(亮度)和饱和度来获得更好的对比度.例如,v_text = 1 - v_bg
可以在明亮的背景上为您提供深色文本,反之亦然(注意中间色调!).它不必是线性的 - 你也可以选择以下步骤函数:if v_bg < 0.5 then v_text = 1 else v_text = 0
或者if s_bg < 0.5 then s_text = 1 else s_text = 0
(在苍白的情况下充满活力).
这只是一些提示.总而言之:这取决于!
谷歌的色彩理论和色彩和谐.一些链接:
http://www.tigercolor.com/color-lab/color-theory/color-harmonies.htm
http://www.colormatters.com/color-and-design/basic-color-theory
没有最好的每个人.
假设您需要确保文本易于阅读,以下简单公式对我来说效果很好:
textColor = brightness(backColor) > 0.5 ? black : white;
Run Code Online (Sandbox Code Playgroud)
亮度定义为
brightness(R,G,B) = 0.299*R + 0.587*G + 0.114*B
Run Code Online (Sandbox Code Playgroud)
("亮度"有几个定义,我用过这个,但我认为任何一个都可以工作).