Magic COLORREF / RGB值确定何时使用浅色/深色文本

时间:2010-02-16 14:16:27

标签: c++ c windows rgb

多年以前,在我长期丢失的Charles Petzold的Windows 3.0编程书中,记录了一个神奇的COLORREF或RGB值,您可以使用它来检查是否应该以浅色或深色绘制文本。例如。如果背景颜色低于此值,则使用黑色文本,如果颜色较高,则使用白色文本。有谁知道/记住这个神奇的价值是什么?

1 个答案:

答案 0 :(得分:8)

我无法告诉COLORREF,但我使用luminance作为阈值获得了良好的结果:

     Y= 0.3 * R + 0.59 * G + 0.11 * B

颜色表示为0.0到1.0之间的十进制值。

如果Y> = 0.5,我认为背景“亮”(并使用深色文本),如果Y <0.5,则表示相反。

我记得我还使用过其他公式,包括简单的意思:

     L = (R+G+B)/3

但我不喜欢结果。对我而言,格林对红色和红色的贡献比对蓝色更有贡献,这似乎是合乎逻辑的。