Ваши звонки на RandomNumber
происходят так быстро, что ГСЧ засевается с одинаковым значением, поэтому вы получаете одно и то же целое число для каждого вызова ... это означает, что все ваши цвета будут иметь одинаковые R, Gи значения B (т. е. оттенки серого).
Переместите объект Random
за пределы метода в статический член:
static Random rng = new Random();
private int RandomNumber(int max)
{
return rng.Next(max);
}