2010-01-29 2 views
1

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

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

ответ

2

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

 Смежные вопросы

  • Нет связанных вопросов^_^