int rMax = Color.Red.R;
int rMin = Color.Blue.R;
// ... and for B, G
var colorList = new List<Color>();
for(int i=0; i<size; i++)
{
var rAverage = rMin + (int)((rMax - rMin) * i / size);
// ... and for B, G
colorList.Add(Color.FromArgb(rAverage, gAverage, bAverage));
}
Вы устанавливаете rMin = 0
и rMax = 255
. Таким образом, вы по сути устанавливаете
rAverage = 255 * i / size;
У вас нет кода для gAverage
и bAverage
в списке, но если бы он был действительно эквивалентным, вы бы увидели постепенное переход от черного-> серого-> белого без других оттенков вообще.
Вероятно, вам нужно перебирать различные оттенки с постоянной яркостью / насыщенностью. См. здесь для примера класса C #, который делает это, и здесь для объяснения уравнения.