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 回答