Вам нужно угаснуть с 255,0,0 (красный) до 255,255,0 (желтый), а затем до 0,255,0 (зеленый)
Я бы сделал это в виде двух петель, первая из которых постепенно исчезает с красного на желтый на первой половине изображения, а другая - с желтого на зеленый на другой половине.
for (int i = 0; i < img.Rows; i++)
{
for (int j = 0; j < img.Cols / 2; j++)
{
img[i, j] = new Rgb(255, 255 * 2 * (double)j / img.Cols, 0);
}
}
for (int i = 0; i < img.Rows; i++)
{
for (int j = img.Cols / 2; j < img.Cols; j++)
{
img[i, j] = new Rgb(255 - (255 * 2 * (double)j / img.Cols), 255, 0);
}
}
Обратите внимание, что вы должны привести j к удвоению, иначе вычисление будет округлено.
Кроме того, было бы более эффективно вычислять цвет один раз для строки, а не для каждого пикселя.
На самом деле, было бы намного эффективнее использовать графическую библиотеку для создания градиентной кисти и использовать ее для заливки изображения.