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

Rob*_*Rob 6 c c++ windows rgb

几年前,在我久违的查尔斯Petzold的Windows 3.0的编程书的副本,有一个神奇的COLORREF或RGB值记录,你可以用它来检查你是否应该以浅色或深色绘制文本.例如,如果背景颜色低于此值,则使用黑色文本,如果更高,则使用白色文本.有谁知道/记住这个神奇的价值是什么?

Rem*_*o.D 8

我不知道COLORREF,但是我使用亮度作为阈值得到了很好的结果:

     Y= 0.3 * R + 0.59 * G + 0.11 * B
Run Code Online (Sandbox Code Playgroud)

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

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

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

     L = (R+G+B)/3
Run Code Online (Sandbox Code Playgroud)

但我不喜欢这个结果.我觉得合乎逻辑的是,除了蓝色之外,绿色比红色和红色更有助于亮度.