Свойство дает вам несколько преимуществ по сравнению с простым публичным полем:
Для максимальной разборчивости требуется максимальная контрастность яркости без перехода к оттенкам, которые не работают вместе. Наиболее последовательный способ сделать это - использовать черный или белый в качестве цвета текста. Вы могли бы придумать более эстетичные схемы, но ни одна из них не будет более разборчивой.
Чтобы выбрать между черным или белым, вам нужно знать яркость фона. Это немного усложняется из-за двух факторов:
Воспринимаемая яркость отдельных основных цветов - красного, зеленого и синего - не идентична. Самый быстрый совет, который я могу дать, - использовать традиционную формулу для преобразования RGB в серый - R * 0,299 + G * 0,587 + B * 0,114. Есть много других формул.
Гамма-кривая, примененная к дисплеям, делает среднее значение серого выше, чем вы ожидали. Это легко решить, используя 186 в качестве среднего значения, а не 128. Все, что меньше 186, должно использовать белый текст, все, что больше 186, должно использовать черный текст.
Я не специалист по программированию вещей, связанных с RGB, но с точки зрения дизайнера часто наиболее читаемый цвет будет просто намного светлее (если цвет фона темный) или темнее ( (если цвет фона светлый) того же оттенка.
В основном вы берете свои значения RGB, и если они ближе к 0 (темный), вы должны увеличивать их каждое на равную величину для вашего цвета переднего плана. , или наоборот, если это светлый BG.
Дополнительные цвета могут быть действительно болезненными для глаз для удобочитаемости.
Вам будет лучше с большой разницей в яркости. В общем, цветной фон с цветным текстом плохо читается и со временем портит глаза. Слегка окрашенные цвета (например, в HSB, S ~ 10%, B> 90%) с черным текстом работают нормально, или слегка окрашенный текст на черном фоне. Я бы не стал раскрашивать оба. Темный текст (b ~ 30%, s> 50%) с тонкой окраской на белом фоне также может подойти. Желтый (янтарный) текст на темно-синем фоне отлично читается, как и желтый или зеленый текст на черном. Вот почему старые тупицы (vt100, vt52 и т. Д. ) выбрал эти цвета.
Если вам действительно нужно сделать цвет на цвете для «внешнего вида», вы можете поменять местами H и B, установив насыщенность на умеренном или низком уровне.
И последнее замечание: если у вас 50% серый фон, пересмотрите свой интерфейс. Вы лишаете себя половины своего динамического диапазона! Вы отталкиваете малозаметных пользователей, в том числе всех старше 35 ...
Цветовые комбинации часто выглядят ужасно, если их не тщательно выбирать. Почему бы не использовать для текста белый или черный цвет, в зависимости от яркости цвета. (Сначала нужно будет преобразовать в HSB.)
Или разрешите пользователю выбрать черный или белый текст.
Или используйте заранее определенные комбинации. Это то, что Google делает в своем календаре.
Я обычно смотрю на дополнения цвета, у них также есть колеса дополнения цвета, чтобы помочь
http://www.makart.com/resources/artclass/cwheel.html
Если ваш цвет - HSL, переверните оттенок на 180 градусов для приличного расчета
Я считаю, что преобразование в HSV могло бы быть подходящим способом, но изменение оттенка IMO выглядело бы странно. Я бы попробовал сохранить оттенок и возиться со значением и, возможно, насыщенностью (светло-красные кнопки с темно-красным текстом ... хм звучит страшно :-)).