2色の相対的な違いに基づいてグラデーションカラーを再計算するための式

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/cjacks./ archive/2006/04/12/575476.aspx HSL-TO-RGB変換の実行方法について説明します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top