当给定任意颜色值时,如何使用该值与梯度偏移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/ carchive/2006/04/12/575476.aspx 介绍了如何执行HSL-to-RGB转换。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top