Название: Адаптация цветовой схемы Отправлено: Igors от Апрель 29, 2017, 09:37 Добрый день
Сейчас background светло-серый и палитры всех контролов подобраны в масть, тоже цвета близкие к светло-серому. Есть настройка цвета которая меняет только background. Делать такие настройки для всех контролов - длинно, утомительно для юзверя и, думается, неэффективно. Как автоматом/пулеметом пересчитать цвета контролов? А то сейчас они с новым фоном смотрятся как "инородные тела". Ну понятно что фон меняется "в разумных пределах" (остается достаточно светлым для черного текста) Что имеете предложить? Спасибо Название: Re: Адаптация цветовой схемы Отправлено: mitrich от Апрель 29, 2017, 11:10 Можно наверное для каждого элемента палитры вычислить отклонение от основного цвета по V в модели HSV (QColor::value) и хранить их, потом брать новый основный цвет и рассчитывать остальные цвета в соответствии с этим отклонением.
Есть ещё конструктор QPalette::QPalette(const QColor &button), рассчитывающий палитру из основного цвета с захардкоженными отклонениями. Название: Re: Адаптация цветовой схемы Отправлено: Igors от Апрель 29, 2017, 11:34 Можно наверное для каждого элемента палитры вычислить отклонение от основного цвета по V в модели HSV (QColor::value) и хранить их, потом брать новый основный цвет и рассчитывать остальные цвета в соответствии с этим отклонением. Не очень ясно как. Пример: дефаулт фон (203, 203, 203), юзер установил (240, 240, 180). Как пересчитать цвет (153, 153. 153) ?Название: Re: Адаптация цветовой схемы Отправлено: mitrich от Апрель 29, 2017, 12:18 Вроде так
Код
Название: Re: Адаптация цветовой схемы Отправлено: Igors от Апрель 29, 2017, 12:58 Код
Название: Re: Адаптация цветовой схемы Отправлено: mitrich от Апрель 29, 2017, 14:22 Тогда можно перемножать RGB цветов на RGB нового фона. Или среднее арифметическое находить. Или какой-нибудь другой режим смешивания подобрать - Blend modes (https://en.wikipedia.org/wiki/Blend_modes).
Например, открыть скриншот контролов в графическом редакторе и посмотреть, какой режим смешивания с квадратом, залитым фоновым цветом будет давать наиболее приемлемый результат. Название: Re: Адаптация цветовой схемы Отправлено: Igors от Апрель 30, 2017, 10:19 Тогда можно перемножать RGB цветов на RGB нового фона. Или среднее арифметическое находить. Или какой-нибудь другой режим смешивания подобрать - Blend modes (https://en.wikipedia.org/wiki/Blend_modes). Много вариантов обычно значит "ничего реального" :) Сделал так: value вычисляю предложенным Вами способом, а если конвертируемый цвет имеет ненулевую saturation, то создаю временный цвет в модели RGB, псевдокодКод: QColor temp = old_Color + new_Back - default_Back; Спасибо |