2013-09-30 3 views
0

Скажем, у меня есть два цвета: красный и розовый. Как бы я определил отношения между ними, чтобы я мог использовать его, чтобы сказать, голубой от синего? «Розовый» не просто светло-красный, поэтому я не хочу использовать ControlPaint.Light. Самый простой способ, который я могу представить, - получить разницу HSB между красным и розовым и просто добавить это к базовому синему цвету, но C# не имеет методов для преобразования этих значений HSB обратно в RGB, и я бы предпочел не писать свои собственные, если могу Помоги. Есть ли другой способ?Преобразование одного цвета в другой на основе отношения другой пары

+0

Если вы не хотите писать собственный код, просто использовать [существующий код] (http://stackoverflow.com/questions/4123998/algorithm-to-switch-between-rgb-and-hsb-color-values) –

+0

@NicoSchertler Я хотел бы использовать как можно меньше неродного кода - по существу, я «Мне нравится знать, есть ли способ рядом с тем, который я отправил, чтобы сделать это. – idlackage

+0

Что не является родным о коде, к которому связан Нико? –

ответ

1

Если вы хотите отрегулировать яркость цвета без изменения оттенка, наилучшим вариантом является преобразование цвета RGB в HSL. Затем отрегулируйте яркость на определенную величину. Затем конвертируйте его обратно в RGB, если это необходимо.

Вы можете найти много примеров кода использовать для выполнения преобразования, такие как:

Convert RGB bytes to HSL and back?

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