1

任意の色の値が与えられた場合、その値とグラデーション オフセット 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) で比較的簡単に実装できるはずです。

ありがとうございました!

4

1 に答える 1

1

解決:

色相-彩度-輝度 (HSL) モデルを使用して、次のことを決定しました。

  • テンプレート グラデーションのベース カラーと各テンプレート ストップ カラーの相対的な色相の差。
  • 各テンプレート ストップ カラーの絶対彩度と明度の値。

新しいグラデーション ストップを生成するために、ユーザー指定の色を取得し、上で計算した適切な色相オフセットによってその色相をシフトし、その彩度と明度の値を上で決定した値に設定しました。

http://en.wikipedia.org/wiki/HSL_and_HSVは、RGB-HSL 式を提供します。http://blogs.msdn.com/b/cjacks/archive/2006/04/12/575476.aspxでは、HSL から RGB への変換方法について説明しています。

于 2012-07-31T14:33:58.490 に答える