我有一个TextBox
,在其文本中显示一种颜色作为背景颜色和背景颜色代码。我已将文字颜色设置为Black
。
问题是,如果用户将颜色设置为Black
,则颜色代码将无法读取。如何以编程方式设置文本颜色,以便在用户选择任何颜色时它变得可读?
答案 0 :(得分:5)
您可以为文字使用负色:
Color InvertColor(Color sourceColor) {
return Color.FromArgb(255 - sourceColor.R,
255 - sourceColor.G,
255 - sourceColor.B);
}
任何颜色都保证在其负面颜色上或多或少可读,所以你去。这是一种快速而又脏的方式来反转颜色,您可能还想查看此问题的答案:How do I invert a color?
另一种选择是在黑色文本中添加白色光环。这就是人们在GIS应用程序中所做的工作,以确保地图标签在任何表面上都是可读的。光环效应的想法是在黑色文本周围有一个薄的白色边框。这样,无论文本是在白色背景上(边框变得不可见)还是在黑色背景上(边框勾勒出文本),文本都是可读的。
有关该主题的多个教程,如this article或this SO question(使用VB.NET示例)。
如果您选择Color
,只需将其分配到文本框的ForeColor
属性,如下所示:
txtColor.ForeColor = mycolor;
答案 1 :(得分:0)
不使用灰色。
此代码更有用:
lblCarColor.BackColor = color;
if ((color.B + color.R + color.G) / 3 <= 128)
{
lblCarColor.ForeColor = Color.White;
}