根据指定的背景颜色确定理想的文本颜色






4.44/5 (94投票s)
2006年11月28日
2分钟阅读

182836
一种根据指定的背景颜色以编程方式确定适当前景颜色的方法
引言
这里提供一个小片段给所有开发网页的人。今天,我的老板告诉我网页元素中的文本颜色与元素的背景颜色对比度不够。好吧,她改变主意的频率比布什否认伊拉克内战的频率还高。因此,我们必须想出一个方法,这样当她改变对背景颜色的想法时,我们就不需要重新修改代码了。
这里有一个链接到描述 VBScript 版本的文章。我将它们分开(而不是把所有内容放在同一篇文章中),以便搜索相应的代码类别可以帮助你更快地找到所需的版本。
代码片段
我们花了三个小时尝试不同的方法来确定 HTML 元素中的文本应该使用黑色还是白色。最终,我们找到一个符合 W3C 标准的公式,用于衡量给定颜色的亮度。一旦找到这个公式,剩下的就比较容易了。
为了确定文本颜色,我们从 255 中减去 bgDelta
值,然后尝试任意阈值,直到文本在所有测试用例中都显示出合理的颜色。你的阈值可能会有所不同,所以不要犹豫,可以更改我们使用的值。
using System.Graphics.Drawing;
public Color IdealTextColor(Color bg)
{
int nThreshold = 105;
int bgDelta = Convert.ToInt32((bg.R * 0.299) + (bg.G * 0.587) +
(bg.B * 0.114));
Color foreColor = (255 - bgDelta < nThreshold) ? Color.Black : Color.White;
return foreColor;
}
我们将此函数放入一个基类中,所有网站页面都继承该基类。如果你正在编写 VB 代码,应该可以轻松地将其移植到你的网站。
免责声明
这篇文章很短,因为描述的方法本身没有太大的复杂性。也没有可下载的代码,因为——好吧——这就是所有的代码,我不想为了给你创建一个示例程序而与 VS2005 作斗争。
希望它能为你节省一些时间…
历史
- 2007 年 5 月 8 日 - 在本文顶部添加了指向本文 VBScript 版本的链接。