C# 什么样的颜色混合使前景色不同于背景色?

C# 什么样的颜色混合使前景色不同于背景色?,c#,winforms,colors,blending,color-blending,C#,Winforms,Colors,Blending,Color Blending,假设我知道背景色,我想相应地改变前景色,使文本与背景不同。例如,如果当前文本颜色(前景色)为红色,对于用户的某些更改,背景颜色也会变为红色或接近红色(这将使文本难以辨认),在这种情况下,我想使用一些颜色混合公式更改前景色,使其与背景颜色不同,并保持易读性 希望您能提供帮助,谢谢。根据上的信息,我可以想出以下C代码,返回颜色。黑色或颜色。白色,与给定(背景)颜色形成最佳对比: 该方法用于确定颜色是亮还是暗,并返回一种对比颜色。黑色或白色对我来说太难看了,我很少在控制文本中使用黑色或白色。对不起,您

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


希望您能提供帮助,谢谢。

根据上的信息,我可以想出以下C代码,返回
颜色。黑色或
颜色。白色
,与给定(背景)颜色形成最佳对比:


该方法用于确定颜色是亮还是暗,并返回一种对比颜色。

黑色或白色对我来说太难看了,我很少在控制文本中使用黑色或白色。对不起,您可以自由返回不同的颜色或思考自己的方法。我只是向你们展示一种实现这一点的方法。你们的回答只是让我了解YIQ,因为我知道这可以帮助我从2种预定义颜色中只选择1种,这是值得尝试的,谢谢。
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;
    }
}