Градиентом называется плавный переход цвета из одного оттенка в другой. В Visual Studio .Net чаще всего используются линейные градиенты и градиенты на основе объекта Path.
Данные градиенты реализованы как кисти. Для использования градиента нужно создать кисть соответствующего типа с помощью объекта LinearGradientBrush. При создании данного объекта задаются четыре аргумента: прямоугольник, заполненный градиентом, стартовый цвет с левой стороны прямоугольника, конечный цвет с правой стороны прямоугольника и режим перехода цвета, который имеет следующие значения:
BackwardDiagonal – градиент заполняет прямоугольник по диагонали, от правого верхнего угла к левому нижнему;
ForwardDiagonal – градиент заполняет прямоугольник по диагонали от левого верхнего угла к правому нижнему;
Horizontal – градиент заполняет прямоугольник слева направо;
Vertical – градиент заполняет прямоугольник сверху вниз.
После этого создаются необходимые замкнутые графические фигуры, которые окрашиваются созданной кистью.
Пример. Создать градиентную кисть размером 10 х 10 пикселей с горизонтальной раскраской, переходящей от цвета морской волны к шоколадному цвету и закрасить ею прямоугольник размером 200 х 100 пикселей с координатами левого верхнего угла (10,10):
Visual Basic .Net:
Dim lb As LinearGradientBrush
Dim r1 As New Rectangle(10, 10, 10, 10)
lb = New LinearGradientBrush(r1, Color.Aqua, Color.Chocolate, LinearGradientMode.Horizontal)
Dim g As Graphics
g = Me.CreateGraphics
g.FillRectangle(lb, 10, 10, 200, 100)
Visual C#:
LinearGradientBrush lb;
Rectangle r1 = new Rectangle(10, 10, 10, 10);
lb = new LinearGradientBrush(r1, Color.Aqua, Color.Chocolate, LinearGradientMode.Horizontal);
Graphics g;
g = this.CreateGraphics();
g.FillRectangle(lb, 10, 10, 200, 200);
Координаты начала прямоугольника для создания градиента значения не имеют, но без них нельзя создать объект Rectangle. Имеют значение только его размеры, т.к. на их основе рассчитывается градиент. Если реальная фигура будет меньше этого прямоугольника, то она будет заполнена частью градиента. Если же фигура будет больше, то градиент повторится столько раз, сколько нужно для её заполнения.
Градиенты можно использовать при печати для создания эффектных надписей, для этого их нужно применить к объекту DrawString.
Данный градиент создается на основе объекта GraphicsPath. Цвета данного градиента начинаются в центре и расходятся по сторонам. Для использования градиента нужно создать кисть соответствующего типа с помощью объекта PathGradientBrush. Данная кисть создаётся на основе объекта GraphicsPath, в который, в принципе, можно помещать любые геометрические фигуры, но на практике рекомендуется подходить к этому разумно. Объект GraphicsPath для создания кисти должен ограничиваться замкнутой ломанной линией.
Если кисть создана на основе прямоугольника, то ею можно окрашивать сам этот прямоугольник и вписанный в него эллипс. Если кисть создана на основе многоугольника, то ею можно окрашивать сам этот многоугольник и созданный по этим же точкам замкнутый сплайн.
Цвета градиента задаются центральным цветом (определяется свойством CenterColor) и массивом цветов, расходящимся по углам фигуры (определяется свойством SurroundColors). Число элементов в массиве соответствует числу углов объекта GraphicsPath.
Пример.Создать градиентную кисть на основе квадрата размером 100 х 100 пикселей, с координатами левого верхнего угла (10,10). Прямоугольник помещается в объект GraphicsPath с именем p1. Градиент состоит из центрального бежевого цвета и четырёх плавно расходящихся к углам цветов (морской волны, кораллового, красного и лимонно-жёлтого). С помощью этого градиента закрасить круг, вписанный в квадрат:
Visual Basic .Net:
Dim p1 As New GraphicsPath
Dim r1 As Rectangle
r1 = New Rectangle(10, 10, 100, 100)
p1.AddRectangle(r1)
Dim pg AsNew PathGradientBrush(p1)
pg.CenterColor = Color.Beige
Dim scolors() As Color = {Color.Aqua, Color.Coral, Color.Red, Color.LemonChiffon}
Особенностью данного градиента является то, что практически для каждой фигуры необходимо создавать свой градиент (например, только что созданным градиентом можно окрасить только круг и сам квадрат), но создаваемая окраска получается очень красивой.