Несколько лет назад, в моей длинной потерянной копии книги Windows 3.0 Programming Charles Petzold, был волшебный COLORREF, или значение RGB зарегистрировало это, Вы могли использовать для проверки, необходимо ли нарисовать текст светлого цвета или темного цвета. Например, если цвет фона был ниже этого значения, то используйте черный текст, если это было выше, используйте белый текст. Кто-либо знает/помнит, каково это волшебное значение?
Я не могу сказать о 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
, но результат мне не понравился. Мне кажется логичным, что зеленый цвет способствует большей легкости, чем красный, а красный - больше, чем синий.