Кисти и закрашенные фигуры в 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);
Примечание. |
---|
В предыдущем примере используется кисть класса 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.Drawing2D.HatchBrush
System.Drawing.Drawing2D.LinearGradientBrush