Russian Qt Forum
Апрель 19, 2024, 23:56 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Color is dark?  (Прочитано 3730 раз)
Azazello
Самовар
**
Offline Offline

Сообщений: 103


Просмотр профиля
« : Сентябрь 13, 2019, 15:29 »

Люблю Qt, особенно когда его трассирую.

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

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

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

Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #1 : Сентябрь 13, 2019, 15:37 »

Попробуйте посмотреть на цвет в разных цветовых моделях.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #2 : Сентябрь 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)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.046 секунд. Запросов: 22.