Формула для пересчета цветов градиента на основе относительной разницы между двумя цветами
-
12-12-2019 - |
Вопрос
При выполнении произвольной ценности цвета, как бы я использовал относительную разницу между этим значением и градиентом смещение 0 (ниже) для регулировки оставшихся смещенных цветов смещения, чтобы они имели одинаковые относительные отношения с новым цветом, поскольку они имелиОригинальный цвет?
<LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
<LinearGradientBrush.GradientStops>
<GradientStop Color="#FFDB0000" Offset="0" />
<GradientStop Color="#FFB74134" Offset="0.6" />
<GradientStop Color="#FFBA5643" Offset="0.85" />
<GradientStop Color="#93C11E00" Offset="1" />
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
.
Моя задача выясняет математическую формулу для использования относительной корректировки.Как только у меня есть эта логика, это должно быть относительно легко реализовать его в конкретной технологии, которую я использую (C # /. Net / WPF).
Спасибо!
Решение
Решение:
Использование модели оттенок на насыщенности (HSL), я определяю:
- .
- Отличительная оттенка оттенок между базовым цветом градиента шаблона и каждым цветом стоп-шаблона.
- Абсолютное насыщенность и значения светимости каждого шаблона Стоп-цвет.
Чтобы генерировать новые градиентные остановки, я принял указанный пользователем цвет и сдвинул его оттенок с помощью соответствующего оттенка, рассчитанного выше, затем установите его значения насыщения и светимости к значениям, определенным выше.
http://en.wikipedia.org/wiki/hsl_and_hsv предоставляет RGB-HSLФормула. http://blogs.msdn.com/b/cjackss/Archive/2006/04/12/575476.aspx описывает, как сделать преобразование HSL-RGB.