Хороший цвет переднего плана текста для данного цвета фона



Я рисую кнопку выбора цвета, и я ищу красивую и простую формулу, чтобы получить хороший цвет текста (передний план) для данного цвета фона в RGB.



простой попыткой было бы просто взять цвет дополнения, но это создаст странную кнопку для цветов, таких как чистый синий или чистый красный.

Есть ли что-то известно, что это?



Если это вообще имеет значение, я использую QT.

602   9  

9 ответов:

для максимальной разборчивости, вы хотите максимальный контраст яркости, не попадая в оттенки, которые не работают вместе. Наиболее последовательный способ сделать это-придерживаться черный или белый для цвета текста. Возможно, вы сможете придумать более эстетичные схемы, но ни одна из них не будет более разборчивой.

выбрать между черным или белым, вам нужно знать яркость фона. Это становится немного сложнее, из-за два фактора:

  • воспринимаемая яркость отдельных первичных красных, зеленых и синих цветов не идентична. Самый быстрый совет, который я могу дать, - использовать традиционную формулу для преобразования RGB в серый-R*0.299 + G*0.587 + B*0.114. Есть много других формул.

  • гамма-кривая, примененная к дисплеям, делает среднее значение серого выше, чем вы ожидаете. Это легко решить, используя 186 в качестве среднего значения, а не 128. Что угодно менее 186 должны использовать белый текст, все, что больше 186 должно использовать черный текст.

Я не эксперт по программированию вещей, связанных с RGB, но с точки зрения дизайнера, часто самый читаемый цвет будет просто намного светлее (если цвет фона темный) или темнее (если цвет фона светлый) версия того же оттенка.

в основном вы бы взяли свои значения RGB, и если они ближе к 0 (темные), вы бы подняли их на равную величину для вашего цвета переднего плана или наоборот, если это светлый BG.

цвета комплемента могут на самом деле быть очень болезненным на глазах для читаемости.

используйте контур для удобочитаемости

Если " хороший цвет текста (передний план)" запланировано на удобочитаемость цели, когда пользователь выбирает any background colour, вы всегда можете создать белый текст, имеющий черный контур. Он будет разборчив на любом твердом, узорном или градиентном фоне, от черного до белого и всего, что находится между ними.

enter image description here

даже если это не попадает в цель вашего намерения, я думаю это стоит разместить здесь, потому что я пришел искать подобные решения.

основываясь на ответе Марка, вот какой-то код Ruby, который сделает работу

rgbval = "8A23C0".hex
r = rgbval >> 16
g = (rgbval & 65280) >> 8
b = rgbval & 255
brightness = r*0.299 + g*0.587 + b*0.114
return (brightness > 160) ? "#000" : "#fff"

вы лучше с большой разницей в яркости. В общем, цветные фоны с цветным текстом сосут для удобочитаемости, болят глаза с течением времени. Слегка тонированные цвета (например, в HSB, S~10%, B>90%) с черным текстом отлично работают или слегка тонированный текст на черном фоне. Я бы держался подальше от окраски обоих. Темный текст (b~30%, s>50%) с тонкой окраской на белом фоне также может быть прекрасным. Желтый (янтарный) текст на темно-синем фоне обладает отличной читабельностью, как и сам текст янтарный или зеленый на черном. Вот почему старые dumbterms (vt100, vt52 и т. д.) пошел за этими цветами.

Если вам действительно нужно сделать color-on-color для "взгляда", вы можете изменить как H, так и B, закрепляя насыщенность на умеренном или низком уровне.

и последнее замечание: если у вас есть 50% серый фон, переосмыслите свой интерфейс. Ты лишаешь себя половины своего динамического диапазона! Вы отталкиваете малозаметных пользователей, включая тех, кому за 35...

сочетания цветов часто выглядят ужасно, когда не тщательно подобраны. Почему бы не использовать белый или черный цвет для текста, в зависимости от яркости цвета. (Сначала нужно будет преобразовать в HSB.)

или пусть пользователь выбирает либо черный, либо белый текст.

или использовать заранее определенные комбинации. Это то, что Google делает в своем календарном продукте.

Я искал ответ simailr и наткнулся на этот пост и некоторые другие, которые я думал, что поделюсь. Согласно http://juicystudio.com/services/luminositycontrastratio.php#specify "критерий успеха 1.4.3 WCAG 2.0 требует визуального представления текста и изображения текста имеет коэффициент контрастности не менее 4,5: 1" с некоторыми исключениями. Этот сайт позволяет вводить цвета переднего плана и фона для вычисления их контраста, хотя было бы полезно, если бы это предложил бы альтернативы или диапазоны.

один из лучших сайтов, которые я нашел для визуализации цветового контраста является http://colorizer.org/ он позволяет настраивать почти все виды цветовых шкал (RGB, CMYK и т. д.) в то же время, а затем показывает результат на экране, например, белый текст на желтом фоне.

Я обычно смотрю на цвет дополняет, они также имеют цвет дополняют колеса, чтобы помочь

http://www.makart.com/resources/artclass/cwheel.html

Если ваш цвет HSL, переверните оттенок на 180 градусов для приличного расчета

Я думаю, что преобразование в HSV может быть таким, но изменение оттенка IMO будет выглядеть странно. Я бы попытался сохранить оттенок и возиться со значением и, возможно, насыщенностью (светло-красные кнопки с темно-красным текстом ... Хм звучит страшно :-) ).

Comments

    Ничего не найдено.