6

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

4

1 回答 1

9

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

     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

但我不喜欢这个结果。在我看来,绿色对亮度的贡献比红色和红色比蓝色更多,这似乎是合乎逻辑的。

于 2010-02-16T16:13:19.973 回答