我正在尝试生成一种颜色,可以根据当前对象的颜色将项目突出显示为“已选择”。我已经尝试增加一些HSB值,但我无法想出一个通用的公式。特别是,使用白色时我遇到了问题(较亮的白色与常规白色看起来没什么不同)。没有要求说我需要让它更亮,所以某种“逆”颜色也会很好用。是否有任何标准的算法或技术来做这样的事情(我猜是的,但我找不到 - 我不确定是否有这个名字)?
感谢,
杰夫
答案 0 :(得分:3)
可能是负面影响:
伪:
int red = originalColor.red
int green = originalColor.green
int blue = originalColor.blue
int newRed = 255 - red
int newGreen = 255 - green
int newBlue = 255 - blue
Color negativeColor = new Color(newRed, newGreen, newBlue)
或添加蓝色效果:
int red = originalColor.red
int green = originalColor.green
int blue = originalColor.blue
int newRed = 255 - red
int newGreen = 255 - green
int newBlue = 255 - blue + 100
if newBlue > 255 {
newBlue = 255
newRed = newRed - 50
newGreen = newGreen - 50
if newRed < 0 {newRed = 0}
if newGreen < 0 {newGreen = 0}
}
Color negativeColor = new Color(newRed, newGreen, newBlue)
答案 1 :(得分:3)
您可以使用的一种技术是交换项目的前景(文本)颜色及其背景颜色。如果您的项目的文字和背景颜色已经具有令人愉悦的对比度,则所选项目应该继续看起来很好。
(来源:wordpress.com)
当您将鼠标悬停在帖子中的标签上时,这就是此站点上使用的技术(Stack Overflow)。他们从LightBlue-on-LightBlue转向LightBlue-on-DarkBlue。试试看效果吧。
答案 2 :(得分:3)
如果你正在使用HSB,尝试将色调向上或向下移动最大值的一半,这应该给你“相反”的颜色(也称为补色)。然而,这对灰色光谱没有任何好处,灰色光谱没有色调,因此看起来相同。
如果你同时使用色调和亮度,你会得到一种“负面”,它适用于所有情况。一个真正的负面会让你“翻转”中点周围的亮度值,但这不适用于中灰色,它仍然是中灰色。
并不总是能够使颜色更亮(白色怎么做?),所以如果你正在寻找对比度,那么将色调和亮度移动一半是最可靠的。
答案 3 :(得分:0)
您可能会在http://www.easyrgb.com/找到工具,为您提供一些想法。