Java 根据背景颜色自动确定最佳字体颜色

Java 根据背景颜色自动确定最佳字体颜色,java,swing,fonts,colors,Java,Swing,Fonts,Colors,可能重复: 我想知道,是否有任何算法可以通过背景色来确定可读性的最佳字体颜色 例如: 我创建了一个带有动态文本和颜色的图标。如果颜色有点暗,我希望它将字体颜色设置为白色,如果它相当明亮,我希望它是黑色(或者甚至是灰色) 不幸的是,我没有找到任何这样的算法,尽管我有点确定它已经存在。有人有什么想法吗 谢谢, ymene我们必须在系统上执行类似的操作:根据背景,我们将字体涂成黑色或白色。我们找到的解决方案并不完美,在某些罕见的情况下选择了错误的颜色,但我们对此非常满意 这就是我们所做的: int

可能重复:

我想知道,是否有任何算法可以通过背景色来确定可读性的最佳字体颜色

例如: 我创建了一个带有动态文本和颜色的图标。如果颜色有点暗,我希望它将字体颜色设置为白色,如果它相当明亮,我希望它是黑色(或者甚至是灰色)

不幸的是,我没有找到任何这样的算法,尽管我有点确定它已经存在。有人有什么想法吗

谢谢,
ymene

我们必须在系统上执行类似的操作:根据背景,我们将字体涂成黑色或白色。我们找到的解决方案并不完美,在某些罕见的情况下选择了错误的颜色,但我们对此非常满意

这就是我们所做的:

int red = 0;
int green = 0;
int blue = 0;

if ( backgroundColor.red + backgroundColor.green + backgroundColor.blue < 383 ) {
    red = 255;
    green = 255;
    blue = 255;
}
int-red=0;
绿色整数=0;
int蓝色=0;
if(backgroundColor.red+backgroundColor.green+backgroundColor.blue<383){
红色=255;
绿色=255;
蓝色=255;
}
然后我们使用
红色
绿色
蓝色
值来创建一个新的
颜色
对象


神奇的数字383是(255+255+255)/2的结果

谢谢你分享你的想法。我试试看。rgb(191,87218)是一种相当深的紫色OSX,用于列表选择背景色(他们使用白色作为文本前景色)。191+87+218=496,因此该算法将确定它为“浅”。我的另一个解决方案是转换成HSB,然后使用B值作为截止值,但在同一个例子中失败了。
int red = 0;
int green = 0;
int blue = 0;

if ( backgroundColor.red + backgroundColor.green + backgroundColor.blue < 383 ) {
    red = 255;
    green = 255;
    blue = 255;
}