我有一个菜单,用户可以选择颜色,我这样显示:

因为我用黑色写出颜色代码,所以深蓝色背景使得难以阅读并且黑色显然是完全隐藏的.首先,这不是特别重要,颜色是用户感兴趣的.
我可以将颜色代码放在白色背景上的单独框中,但出于兴趣,我想知道是否有一些标准代码来处理这个或一些简单的方法可以应用于确保文本始终可读?如果有人可以在任何帮助下指出我的资源,我们将不胜感激.
如果颜色是暗的我会选择白色,如果是浅的我会选择黑色.许多应用程序都这样做,但我认为.net库中没有标准实现.
尝试类似的东西:
Color ForegroundForBackground(Color bg) {
if(bg.R*2 + bg.G*7 + bg.B < 500)
return Color.White;
else
return Color.Black;
}
Run Code Online (Sandbox Code Playgroud)
你想在纯蓝色上使用白色,而不是在纯gren和纯红色上使用白色,因为它们看起来更亮.将数字调整为看起来合理的数字.
编辑:由于jk友情地提供了Luminance(colorimetry)的链接,我改变了线性组合以更好地匹配(将数字四舍五入,不需要更多).虽然我怀疑绿色系数在测试中可能证明太大了.