1

假设我知道背景颜色并且我想相应地更改前景色以使文本与背景不同。例如,如果当前文本颜色(前景色)为红色,对于用户的某些更改,背景色也变为红色或接近红色(这将使文本难以辨认),在这种情况下,我想使用更改前景色一些颜色混合配方,使其与背景色不同,并保持易读性。

希望你能帮忙,谢谢。

4

1 回答 1

2

根据此博客条目上的信息,我可以提出以下 C# 代码,该代码返回Color.Black或返回Color.White与给定(背景)颜色的最佳对比:

public Color GetContrastingColor(Color backColor)
{
    int r = (int)backColor.R;
    int g = (int)backColor.G;
    int b = (int)backColor.B;

    int yiqSpace = ((r * 299) + (g * 587) + (b * 114)) / 1000;

    if (yiqSpace > 131)
    {
        return Color.Black;
    }
    else
    {
        return Color.White;
    }
}

该方法使用YIQ来确定颜色是浅色还是深色,并返回一个对比色。

于 2013-04-18T14:41:13.437 回答