Формула для пересчета цветов градиента на основе относительной разницы между двумя цветами

StackOverflow https://stackoverflow.com//questions/11690613

  •  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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top