Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Azazello от Сентябрь 13, 2019, 15:29



Название: Color is dark?
Отправлено: Azazello от Сентябрь 13, 2019, 15:29
Люблю Qt, особенно когда его трассирую.

Задача проста: выделить текст на фоне. Как? Фон изменяется:  яркий  - текст черным, темным - текст белый.
Самое интересное - QLabel это умеет.
Я не перекладываю задачу - но разбор Qt либ по кирпичикам завезло в тупик, пытался. Не, если задасться целью, то конечно......

Да. Есть формула, которая расчитывает, но она не учитывает альфа канал. Простите за сумбурность.

Подитожу: Вход QColor с альфа каналом, выход темный цвет или светлый.
Если сложно изъясняюсь, нужна функция: bool isDarkColor(const QColor&)



Название: Re: Color is dark?
Отправлено: Old от Сентябрь 13, 2019, 15:37
Попробуйте посмотреть на цвет в разных цветовых моделях.


Название: Re: Color is dark?
Отправлено: Igors от Сентябрь 13, 2019, 15:57
Подитожу: Вход QColor с альфа каналом, выход темный цвет или светлый.
Если сложно изъясняюсь, нужна функция: bool isDarkColor(const QColor&)
Почему бы не попробовать банальный перевод в greyscale (коэффициенты примерно такие)

grey = red * 0.32 + green * 0.57 + blue * 0.11

если grey > 0.5, то светлый. С альфой исходные RGB должны быть пересчитаны с учетом цвета подложки (background)