假设我知道背景色并且我想相应地改变前色以使文本与背景不同。例如,如果当前文本颜色(forecolor)是RED,对于用户的某些更改,背景颜色也变为RED或接近RED(这将使文本难以辨认),在这种情况下,我想要使用更改前景色一些颜色混合配方使其与背景颜色不同,并保持易读性。
希望你能提供帮助,谢谢。
答案 0 :(得分:2)
根据this blog entry上的信息,我可以提出以下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来确定颜色是亮还是暗,并返回一种对比色。