Разбейте свою шкалу на четыре части.По мере увеличения цветовой шкалы секция 1 - красный / синий с уменьшением красного, секция 2 - сине-зеленая с усилением зеленого, секция 3 - сине-зеленая с уменьшением синего, а секция 4 - зеленая / красная с усилением красного.
Непроверенный образец ниже.Возможно, вам придется внести коррективы в зависимости от требуемой компоновки вашего значения RGB.
private static readonly double n35 = 35;
public static int CalculateRgb(byte colorIndex)
{
if (colorIndex > 140)
{
throw new ArgumentOutOfRangeException(nameof(colorIndex));
}
byte red = 0, green = 0, blue = 0;
if (colorIndex <= 35)
{
blue = 255
red = 255 * (n35 - (double) colorIndex) / n35);
}
else if (colorIndex <= 70)
{
colorIndex -= 35;
blue = 255
green = 255 * ((double) colorIndex / 35);
}
else if (colorIndex <= 105)
{
colorIndex -= 70;
green = 255
blue = 255 * (n35 - (double) colorIndex) / n35);
}
else
{
colorIndex -= 105;
green = 255
red = 255 * ((double) colorIndex) / n35);
}
return
(red << 24) |
(green << 16) |
(blue << 8);
}