计算颜色渐变

TT.*_*TT. 11 colors fade

给定两种颜色和n步,如何计算n种颜色,包括产生淡化效果的两种给定颜色?

如果可能的话,伪代码是首选,但这可能是用Java实现的.

谢谢!

nic*_*ckf 21

将每种颜色分成RGB组件,然后计算所需的各个步骤.

oldRed = 120;
newRed = 200;
steps = 10;
redStepAmount = (newRed - oldRed) / steps;

currentRed = oldRed;
for (i = 0; i < steps; i++) {
   currentRed += redStepAmount;
}
Run Code Online (Sandbox Code Playgroud)

显然将其扩展为绿色和蓝色.

  • 所示的代码永远不会达到newRed,因为整数截断和一个一个错误.最好重组为currentRed = oldRed +((i*(newRed - oldRed))/(步骤-1). (5认同)

Ada*_*vis 11

您还应该检查两个相关的问题:

请注意,在HSV色彩空间而不是RGB中,您通常会做得更好 - 它会为人眼产生更令人愉悦的色彩(更低的碰撞机会或负光学特性).

祝好运!

-亚当


Tom*_*Tom 5

如果您想要一个看起来像大多数颜色选择器 GUI 小部件的混合,您确实需要转换为 HSL 或 HSV。从那里开始,您可能可以在每个维度上进行线性插值。

尝试直接在 RGB 色彩空间中进行插值是一个坏主意。它太非线性了(不,伽玛校正在这种情况下没有帮助)。