Fórmula para recompuir los colores de gradiente basados en la diferencia relativa entre dos colores.

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

  •  12-12-2019
  •  | 
  •  

Pregunta

Cuando se le da un valor de color arbitrario, ¿cómo usaría la diferencia relativa entre ese valor y el desplazamiento de gradiente 0 (abajo) para ajustar los colores restantes de las compensaciones para que tengan la misma relación relativa con el nuevo color como tenían con¿El color original?

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

Mi desafío es averiguar la fórmula matemática para usar para realizar los ajustes relativos.Una vez que tenga esta lógica, debe ser relativamente fácil de implementarlo en la tecnología en particular que estoy usando (C # /. NET / WPF).

¡Gracias!

¿Fue útil?

Solución

Solución:

Usando el modelo Hue-Saturation-Luminance (HSL), determiné:

  • La diferencia de tono relativa entre el color base de la plantilla del gradiente y cada color de parada de la plantilla.
  • La saturación absoluta y los valores de luminosidad de cada color de tope de plantilla.

Para generar las nuevas paradas de gradiente, tomé el color especificado por el usuario y cambié su tono por el desplazamiento del tono apropiado calculado anteriormente, luego configure sus valores de saturación y luminosidad a los valores determinados anteriormente.

http://en.wikipedia.org/wiki/hsl_and_hsv proporciona un RGB-HSLfórmula. http://blogs.msdn.com/b/cjacks/Archive/2006/04/12/575476.aspx describe cómo hacer la conversión HSL-A-RGB.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top