Formula per ricomputare i colori gradienti in base alla differenza relativa tra due colori

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

  •  12-12-2019
  •  | 
  •  

Domanda

Quando viene somministrato un valore di colore arbitrario, come usare la differenza relativa tra tale valore e sfacciato di gradiente 0 (sotto) per regolare i colori dei restanti offset in modo che abbiano la stessa relazione relativa con il nuovo colore come avevano conil colore originale?

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

La mia sfida è capire la formula matematica da utilizzare per eseguire le relative regolazioni.Una volta che ho questa logica, dovrebbe essere relativamente facile implementarlo nella particolare tecnologia che sto usando (C # /. NET / WPF).

Grazie!

È stato utile?

Soluzione

Soluzione:

Usando il modello Hue-Saturation-Luminanza (HSL), ho determinato:

    .
  • La differenza di tonalità relativa tra il colore di base del gradiente del modello e ogni modello di arresto del modello.
  • La saturazione assoluta e i valori di luminosità di ciascun modello di arresto del colore.

Per generare le nuove fermate del gradiente, ho preso il colore specificato dall'utente e ho spostato la sua tonalità con l'offset di tonalità appropriato calcolato sopra, quindi imposta la sua saturazione e valori di luminosità ai valori determinati sopra.

http://en.wikipedia.org/wiki/hsl_and_hsv fornisce un RGB-HSLformula. http://blogs.msdn.com/b/cjacks/archive/2006/04/12/575476.aspx Descrive come eseguire la conversione HSL-to-RGB.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top