Поделиться через


Кисти и закрашенные фигуры в GDI+

Обновлен: Ноябрь 2007

Замкнутые фигуры, такие как прямоугольники или эллипсы, состоят из двух частей — из контура и из внутренней области. Контур рисуется с помощью пера, а внутренняя область заполняется с помощью кисти. В GDI+ имеется несколько классов кистей для заливки замкнутых фигур: SolidBrush, HatchBrush, TextureBrush, LinearGradientBrush и PathGradientBrush. Все эти классы являются производными от класса Brush. На приведенном ниже рисунке изображен прямоугольник, залитый сплошной кистью, и эллипс, залитый штриховой кистью.

Закрашенные фигуры

Сплошные кисти

Чтобы залить замкнутую фигуру, необходимы объекты Graphics и Brush. Объект Graphics предоставляет такие методы, как FillRectangle и FillEllipse, а в объекте Brush хранятся параметры заливки, такие как цвет и шаблон. Объект Brush передается методу заливки в качестве одного из аргументов. В следующем примере кода демонстрируется заливка эллипса сплошным красным цветом.

Dim mySolidBrush As New SolidBrush(Color.Red)
myGraphics.FillEllipse(mySolidBrush, 0, 0, 60, 40)

SolidBrush mySolidBrush = new SolidBrush(Color.Red);
myGraphics.FillEllipse(mySolidBrush, 0, 0, 60, 40);
cwka53ef.alert_note(ru-ru,VS.90).gifПримечание.

В предыдущем примере используется кисть класса SolidBrush, унаследованного у класса Brush.

Штриховые кисти

При заливке формы штриховой кистью необходимо задать основной цвет, цвет фона и стиль штриховки. Основной цвет определяет цвет штриховки.

Dim myHatchBrush As _
   New HatchBrush(HatchStyle.Vertical, Color.Blue, Color.Green)

HatchBrush myHatchBrush =
   new HatchBrush(HatchStyle.Vertical, Color.Blue, Color.Green);

В GDI+ имеется более 50 стилей штриховки; на следующем рисунке показаны стили Horizontal, ForwardDiagonal и Cross.

Закрашенные фигуры

Текстурные кисти

Текстурная кисть позволяет заливать фигуру с использованием узора, сохраненного в виде растрового изображения. Например, предположим, что приведенный ниже рисунок сохранен на диске в файле под названием MyTexture.bmp.

Закрашенная фигура

В приведенном ниже примере демонстрируется заливка эллипса путем повторения в его внутренней области рисунка, сохраненного в файле MyTexture.bmp.

Dim myImage As Image = Image.FromFile("MyTexture.bmp")
Dim myTextureBrush As New TextureBrush(myImage)
myGraphics.FillEllipse(myTextureBrush, 0, 0, 100, 50)

Image myImage = Image.FromFile("MyTexture.bmp");
TextureBrush myTextureBrush = new TextureBrush(myImage);
myGraphics.FillEllipse(myTextureBrush, 0, 0, 100, 50);

Эллипс после заливки представлен на следующем рисунке.

Закрашенная фигура

Градиентные кисти

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

Dim myLinearGradientBrush As New LinearGradientBrush( _
   myRectangle, _
   Color.Blue, _
   Color.Green, _
   LinearGradientMode.Horizontal)
myGraphics.FillEllipse(myLinearGradientBrush, myRectangle)

LinearGradientBrush myLinearGradientBrush = new LinearGradientBrush(
   myRectangle,
   Color.Blue,
   Color.Green,
   LinearGradientMode.Horizontal);
myGraphics.FillEllipse(myLinearGradientBrush, myRectangle);

Эллипс после заливки представлен на следующем рисунке.

Закрашенная фигура

Кисть градиента контура может быть настроена так, чтобы цвет менялся от центра фигуры к ее границам.

Закрашенная фигура

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

Закрашенная фигура

См. также

Задачи

Практическое руководство. Рисование заполненного прямоугольника в Windows Forms

Практическое руководство. Рисование заполненного эллипса в Windows Forms

Ссылки

System.Drawing.SolidBrush

System.Drawing.Drawing2D.HatchBrush

System.Drawing.TextureBrush

System.Drawing.Drawing2D.LinearGradientBrush

Другие ресурсы

Прямые и кривые линии и фигуры