3种颜色之间的颜色插值

时间:2011-03-23 14:21:32

标签: colors interpolation gradients

我使用下面的公式从colorA到colorB得到一个漂亮的颜色渐变,但我不知道如何对3种颜色做同样的事情,所以渐变从colorA到colorB再到colorC

colorT = colorA * p + colorB * (1.0 - p);其中“p”是从0.0到1.0的百分比

由于

5 个答案:

答案 0 :(得分:3)

感谢您的公式。但是我不得不对它进行一些修改,因为它没有正确地插入3种颜色之间(颜色变化有跳跃)

以下是解决方法:

if (p < 0.5)
        {
            COLORx = (COLORb * p * 2.0) +  COLORa * (0.5 - p) * 2.0;
        }
        else
        {
            COLORx = COLORc * (p - 0.5) * 2.0 + COLORb * (1.0 - p) * 2.0;          
        }

答案 1 :(得分:2)

嗯,对于3种颜色,你可以使用p = 0.0到2.0:

if p <= 1.0
  colorT = colorA * p + colorB * (1.0 - p);
else
  colorT = colorB * (p - 1.0) + colorC * (2.0 - p);

或者缩放它,这样你仍然可以使用p = 0.0到1.0:

if p <= 0.5
  colorT = colorA * p * 2.0 + colorB * (0.5 - p) * 2.0;
else
  colorT = colorB * (p - 0.5) * 2.0 + colorC * (1.0 - p) * 2.0;

答案 2 :(得分:2)

可能为此构造单个表达式,但最简单的是使用条件来使用不同的表达式,具体取决于您是在A - B部分还是B - C部分的范围:

colorT =
  p < 0.5
    ? colorA * p * 2.0 + colorB * (1.0 - p * 2.0)
    : colorB * (p - 0.5) * 2.0 + colorC * (1.0 - (p - 0.5) * 2.0);

答案 3 :(得分:1)

答案 4 :(得分:0)

您希望能够创建3种颜色但相同的渐变效果吗?完全相同:完成此渐变后,启动一个新颜色,其中colorA是当前颜色B,colorB是新颜色。附加结果,您就完成了:

colorA ---- colorB colorB ---- colorC

祝你好运!