我不知道怎么问这个,但在这里不用。

我在屏幕上绘制一个填充有色矩形。的颜色是R中的形式,G,B

我然后要绘制的矩形的顶部的文本,但是文本的颜色必须是这样的,它提供了最好的对比度,这意味着它是可读的。

示例:

如果我绘制一个黑色矩形,明显的颜色的文本将是白色的。

我试过,现在是这样的。我通过此功能的矩形的颜色,并将其返回一个倒置的颜色,然后我用我的文本。

它的工作原理,但它不是最好的方法。

任何建议?

// eg. usage: Color textColor = GetInverseLuminance(rectColor);
private Color GetInverseLuminance(Color color)
{
    int greyscale = (int)(255 - ((color.R * 0.30f) + (color.G * 0.59f) + (color.B * 0.11f)));

    return Color.FromArgb(greyscale, greyscale, greyscale);
}
有帮助吗?

解决方案

这是保证得到显著不同的颜色的一种简单的方法是切换的RGB三元组。

的每个组件的顶部位
Color inverse(Color c)
{
    return new Color(c.R ^ 0x80, c.G ^ 0x80, c.B ^ 0x80);
}

如果原来的颜色为#1AF283中, “逆” 将是#9A7203。

对比度将是显著。我做任何保证对美学。

<强>更新,2009/4/3:我尝试了这个和其它方案。结果在我的博客

其他提示

最可读的颜色将是白色或黑色。最“安慰”颜色将一些不白不黑,这将是轻微的对比您的背景颜色的颜色。有没有办法以编程方式做到这一点,因为它是主观的。因为每个人都看到不同的事情,你不会找到最可读的颜色给大家。

关于颜色的一些技巧,特别是关于前景和背景并置,如用文本。

人眼基本上是一个简单的透镜,因此,只能有效地专注于每次一个颜色。通过使用不同的折射率(彩色隐形眼镜)的多个透镜,使得所有颜色都聚焦在同一时间,但人的眼睛是不是先进最现代化的摄像头工作中使用解决这个问题的镜头。

因此,用户应该只专注于一种颜色在一个时间来阅读文本。这意味着<强>在前景是彩色的,或背景,但从未两者。这导致通常被称为振动状态,其中所述眼前景色和背景色之间快速移动焦点,试图解决形状,但它从未结算时,形状是从未在焦点,并且它会导致眼睛疲劳。

您的功能将无法正常工作如果您有RGB(127,127,127)提供它,因为它会返回完全相同的颜色。 (修改您的函数返回黑色或白色会略微改善的事情)

总是有东西可读的最好方法是为具有白色的文字用黑色周围,或周围的其他方法。

它是由第一绘制黑色文本在oftenly实现(X-1,Y-1),(X + 1,Y-1),(X + 1,Y-1),(X + 1,X + 1 ),然后白色文本在(X,Y)。

另外,也可以先画一个半透明的黑色块,然后不透明白色文本在它。这确保总是会有一定量的您的背景和文字之间的对比度。

为什么灰色?黑色或白色是最好的。白色的暗色调,黑色的光色。只看到如果亮度高于阈值,并选择一个或其他

(你并不需要.NET,C#或asp.net标签的方式)

您需要学习一些色彩理论。所谓的“色轮临” A计划是有趣玩弄,并给你的总体思路。

从本质上讲,你正在寻找免费的色彩,为给定的颜色。

这是说,我想你会发现,虽然色彩理论帮助,你仍然需要一个人的眼睛进行微调。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top