Вычисление начального и конечного цветов градиентной заливки с учетом основного цвета - PullRequest
1 голос
/ 29 января 2010

У меня есть приложение WTL C ++, и я хочу, чтобы пользователь мог выбирать разные цвета для некоторых элементов пользовательского интерфейса и применять градиентную заливку с помощью вызова API GradientFill. Однако вместо того, чтобы позволить пользователю выбирать начальный и конечный цвета для градиента, я бы хотел, чтобы они могли выбирать «базовый» цвет и для моего приложения автоматически рассчитывать подходящие начальные / конечные цвета. Я хочу закончить с заливкой, которая похожа на ту, которую Windows использует для различных тематических элементов. Базовый цвет может быть «средним» цветом градиента, так как мое приложение вычисляет немного более светлый цвет для начала градиента и немного более темный цвет для конца градиента. В качестве альтернативы я мог бы использовать основание в качестве начального цвета и вычислить конец или наоборот.

Я уверен, что это было бы относительно легко с некоторой макро-магией RGB, но я действительно не знаю, с чего начать. Любые идеи приветствуются.

1 Ответ

2 голосов
/ 29 января 2010

Цветовое пространство RGB не подходит для этого. Используйте HSL или HSV , легко сгенерировать красивый градиент путем изменения отдельного компонента. Преобразование из HSL / V в триплет RGB, который вы можете использовать в API, simple .

...