Formule pour recompagner des couleurs gradient basées sur la différence relative entre deux couleurs

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

  •  12-12-2019
  •  | 
  •  

Question

Lorsqu'il est donné une valeur de couleur arbitraire, comment utiliser la différence relative entre cette valeur et une décalage de gradient 0 (ci-dessous) pour ajuster les couleurs des décalages restants de manière à avoir la même relation relative avec la nouvelle couleur qu'ils avaient avecla couleur d'origine?

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

Mon défi consiste à déterminer la formule mathématique à utiliser pour effectuer les ajustements relatifs.Une fois cette logique, il devrait être relativement facile de le mettre en œuvre dans la technologie particulière que j'utilise (C # /. Net / WPF).

Merci!

Était-ce utile?

La solution

solution:

Utilisation du modèle HUE-SATURATION-LUMINE (HSL), j'ai déterminé:

  • la différence de teinte relative entre la couleur de base du gradient de modèle et chaque modèle d'arrêt de la gabarit.
  • Les valeurs de saturation absolues et de la luminosité de chaque modèle d'arrêt de modèle.

Pour générer les nouveaux arrêts de gradient, j'ai pris la couleur spécifiée par l'utilisateur et a décalé sa teinte par le décalage de teinte approprié calculé ci-dessus, puis définissez ses valeurs de saturation et de luminosité aux valeurs déterminées ci-dessus.

http://fr.wikipedia.org/wiki/hsl_and_hsv fournit une RVB-HSLformule. http://blogs.msdn.com/b/cjacks/Rarchive/2006/04/12/575476.aspx explique comment faire la conversion HSL-TO-RGB.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top