Учитывая цвет фона, как получить основной цвет, который делает его читаемым на том цвете фона?
Я означаю вычислять тот основной цвет автоматически в программе.
Или упростите проблему, если основной цвет выбран из белого/черного, как сделать выбор в программе?
Самым безопасным вариантом является соблюдение Руководства по доступности веб-контента 2.0 Консорциума Всемирной паутины (W3C), которое определяет коэффициент яркости контрастности 4,5:1 для обычного текста (12 pt или меньше) и 3,0:1 для крупного текста. Коэффициент контрастности определяется как:
[Y(b) + 0,05] / [Y(d) + 0,05]
Где Y(b) - яркость (светимость) более яркого цвета, а Y(d) - яркость более темного цвета.
Яркость Y вычисляется путем преобразования каждого из значений RGB цвета в значения rgb с поправкой на гамму:
Затем объедините их, используя константы sRGB (округленные до 4-х мест):
Y = 0.2126*r + 0.7151*g + 0.0721*b
Это дает белому цвету Y равный 1, а черному - Y равный 0, поэтому максимально возможный контраст равен (1.05/ 0.05) = 21 (в пределах ошибки округления).
Или позвольте JuicyStudio сделать расчеты за вас.
Этот расчет предполагает использование монитора стандартной производительности в относительно слабо освещенной комнате (или в комнате, которую пользователь может затемнить, если потребуется). Это делает его адекватным для домашнего или офисного использования, но я не знаю, адекватен ли он для мобильных приложений или других устройств, которые используются вне помещения.
Использование цветов в качестве цвета переднего плана затруднено, поскольку необходимо учитывать контрастность и цветовую слепоту.
Вы можете вычислить инверсный цвет, но вы рискуете ослабить контраст «посередине» цветового пространства.