Следующий метод должен работать для вас:
Color GetColor(Int32 rangeStart /*Complete Red*/, Int32 rangeEnd /*Complete Green*/, Int32 actualValue)
{
if (rangeStart >= rangeEnd) return Colors.Black;
Int32 max = rangeEnd - rangeStart; // make the scale start from 0
Int32 value = actualValue - rangeStart; // adjust the value accordingly
Int32 green = (255 * value) / max; // calculate green (the closer the value is to max, the greener it gets)
Int32 red = 255 - green; // set red as inverse of green
return Color.FromRgb((Byte)red, (Byte)green, (Byte)0);
}