我不知道如何问这个,但这里有。
我在屏幕上绘制了一个填充的彩色矩形。颜色是 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);
}