Show / Hide Table of Contents

Практическое руководство. Создание линейного градиента

GDI+ поддерживает горизонтальные, вертикальные и диагональные линейные градиенты. По умолчанию цвет в линейном градиенте меняется равномерно. Тем не менее можно настроить линейный градиент, таким образом, чтобы цвет меняется образом неоднородной.

В следующем примере заполняется линии, эллипсы и прямоугольник с горизонтальной кисти линейного градиента.

LinearGradientBrush Конструктор принимает четыре аргумента: две точки и два цвета. Первая точка (0, 10) связан с первый цвет (красный цвет), и второй точки (200, 10) связан со вторым цветом (синий). Как и следовало ожидать, линии, соединяющей (0, 10) для (200, 10) плавно меняется от красного к синему.

Вторые точек (50, 10) и (200, 10), не важны. Важно то, что две точки имеют одну координату второй — соединительных линий по горизонтали. Эллипс и прямоугольника также постепенно меняются от красного к синему как горизонтальные координаты от 0 до 200.

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

Линейный градиент

Использование горизонтальных линейных градиентов

  • Передайте непрозрачный синий, красный и непрозрачный как третий и четвертый аргумент, соответственно.

    LinearGradientBrush linGrBrush = new LinearGradientBrush(
       new Point(0, 10),
       new Point(200, 10),
       Color.FromArgb(255, 255, 0, 0),   // Opaque red
       Color.FromArgb(255, 0, 0, 255));  // Opaque blue
    
    Pen pen = new Pen(linGrBrush);
    
    e.Graphics.DrawLine(pen, 0, 10, 200, 10);
    e.Graphics.FillEllipse(linGrBrush, 0, 30, 200, 100);
    e.Graphics.FillRectangle(linGrBrush, 0, 155, 500, 30);
    

В предыдущем примере цветовые компоненты линейно меняются при переходе из горизонтальную координату 0 горизонтальную координату 200. Например точки, в которых первая координата на равном расстоянии от 0 до 200 будет иметь синего компонента, который находится на равном расстоянии от 0 до 255.

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

Горизонтальная координата RGB компонентов
0 (0, 0, 0)
40 (128, 0, 0)
200 (255, 0, 0)

Обратите внимание, что красный компонент имеет половинную интенсивность, когда горизонтальная координата представляет только 20 процентов пути от 0 до 200.

В следующем примере задается Blend свойство LinearGradientBrush объект должен быть сопоставлен три относительный интенсивности три относительные позиции. Как и в предыдущей таблице относительная интенсивность 0,5, связанный с относительное положение 0,2. Код заполняет эллипса и прямоугольник с градиентной кисти.

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

Линейный градиент

Настройка линейных градиентов

  • Передайте непрозрачный черный и непрозрачный красный как третий и четвертый аргумент, соответственно.

    LinearGradientBrush linGrBrush = new LinearGradientBrush(
       new Point(0, 10),
       new Point(200, 10),
       Color.FromArgb(255, 0, 0, 0),     // Opaque black 
       Color.FromArgb(255, 255, 0, 0));  // Opaque red
    
    float[] relativeIntensities = { 0.0f, 0.5f, 1.0f };
    float[] relativePositions = { 0.0f, 0.2f, 1.0f };
    
    //Create a Blend object and assign it to linGrBrush.
    Blend blend = new Blend();
    blend.Factors = relativeIntensities;
    blend.Positions = relativePositions;
    linGrBrush.Blend = blend;
    
    e.Graphics.FillEllipse(linGrBrush, 0, 30, 200, 100);
    e.Graphics.FillRectangle(linGrBrush, 0, 155, 500, 30);
    

Градиенты в предыдущих примерах были по горизонтали; то есть цвет постепенно изменяется при переходе по любой горизонтальной линии. Можно также определить вертикальные и диагональные градиенты.

В следующем примере передается точки (0, 0) и (200, 100), чтобы LinearGradientBrush конструктор. Связан синий цвет (0, 0) и зеленый цвет, связанные с (200, 100). Строки (с помощью пера шириной 10) и эллипс заполняются кисти линейного градиента.

Ниже показаны строки, а также эллипса. Обратите внимание, что цвет эллипса постепенно при переходе по любой строке, — параллельное выполнение на строку, обрабатываемым (0, 0) и (200, 100).

Линейный градиент

Чтобы создать диагональный линейным градиентом

  • Передайте непрозрачный синий и непрозрачный зеленый как третий и четвертый аргумент, соответственно.

    LinearGradientBrush linGrBrush = new LinearGradientBrush(
       new Point(0, 0),
       new Point(200, 100),
       Color.FromArgb(255, 0, 0, 255),   // opaque blue
       Color.FromArgb(255, 0, 255, 0));  // opaque green
    
    Pen pen = new Pen(linGrBrush, 10);
    
    e.Graphics.DrawLine(pen, 0, 0, 600, 300);
    e.Graphics.FillEllipse(linGrBrush, 10, 100, 200, 100);
    

См. также

  • Заливка фигур с помощью градиентной кисти
  • Объекты Graphics и Drawing в Windows Forms
Back to top Неофициальная документация по .NET на русском языке. Лицензия: CC-BY 4.0. Основано на документации по .NET с Microsoft Docs
Generated by DocFX