2012-07-27 110 views
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)中實現它應該相對容易。

謝謝!

回答

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的轉換。