当给定任意颜色值时,如何使用该值与渐变偏移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 回答
解:
使用Hue-Saturation-Luminance(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的转换 .