Градиент

Градиент это плавно изменение цвета. Градиент имеет направление, он может быть вертикальным, горизонтальным, диагональным, или произвольным. 

Для начала давайте сделаем горизонтальный градиент от черного до зеленого цвета. То есть слева нашего окна все линии будут черные и плавно по направлению к правому краю окна (в сторону увелечения X) цвет вертикальных линий должен становится все зеленее и зеленее пока не достигнет максимальной яркости (255) для самой правой линии окна.

Создадим Bitmap с размерами равными размерам окна. 

Воспользуемся функцией SetPixel чтобы рисовать отдельные пиксели 

Выведем градиент на экран, для этого нам необоходимо заполнить каждый пиксель окна плавно увеличивая интенсивность яроксти цвета слева направо. 

public void DrawHorizontalGradient()
{
    Bitmap bmp = new Bitmap(ClientSize.Width, ClientSize.Height);
    for (int i = 0; i < ClientSize.Width; i++)
    {
        double koef = (i) / (double)ClientSize.Width;
        Color color = Color.FromArgb((int)(koef * 255), 0, 0);
        for (int j = 0; j < ClientSize.Height; j++)
        {
            bmp.SetPixel(i, j, color);
        }
    }
    pictureBox1.Image = bmp;
}

Получим такой результат:

Теперь создадим новый метод диагонального градиента. Для этого нужно расчитывать цвет каждого пикселя перед выводом, потому что цвет становится функцией от двух координат сразу (x,y)

Максимальная яркость зеленого цвета будет в правой нижней точки окна (с максимальным X и максимальным Y)

public void DrawDiagGradient()
{
    Bitmap bmp = new Bitmap(ClientSize.Width, ClientSize.Height);
    for (int i = 0; i < ClientSize.Height; i++)
    {
        for (int j = 0; j < ClientSize.Width; j++)
        {
            double koef = (i + j) / (double)(ClientSize.Height + ClientSize.Width);
            Color color = Color.FromArgb(0, (int)(koef * 255), 0);
            bmp.SetPixel(j, i, color);
        }
    }
    pictureBox1.Image = bmp;
}

Получим диагональный черно-зеленый градиент: