假设我知道背景色,我想相应地改变前色调,使文本与背景区分开来。例如,如果当前文本颜色(前色)是红色,由于用户的某些更改,背景色也变为红色或接近红色(这会使文本难以辨认),在这种情况下,我想使用一些颜色混合公式更改前色,使其与背景色区分开来,并保持易读性。
希望你能帮忙,谢谢。
基于这个博客条目的信息,我可以想出以下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来确定颜色是浅色还是深色,并返回一个对比色。