Кисти и заполненные фигуры в GDI+
Закрытая форма, например прямоугольник или многоточие, состоит из контура и интерьера. Контур рисуют пером, а внутренности заполняют кистью. GDI+ предоставляет несколько классов кистей для заполнения областей закрытых фигур: SolidBrush, HatchBrush, TextureBrush, LinearGradientBrushи PathGradientBrush. Все эти классы наследуются от класса Brush. На следующем рисунке показан прямоугольник, заполненный сплошной кистью, и эллипс, заполненный штрихованной кистью.
Твердые кисти
Для заполнения закрытой фигуры требуется экземпляр класса Graphics и Brush. Экземпляр класса Graphics предоставляет методы, такие как FillRectangle и FillEllipse, а Brush сохраняет атрибуты заливки, такие как цвет и шаблон. Brush передается в качестве одного из аргументов метода заполнения. В следующем примере кода показано, как заполнить многоточие с сплошным красным цветом.
SolidBrush mySolidBrush = new SolidBrush(Color.Red);
myGraphics.FillEllipse(mySolidBrush, 0, 0, 60, 40);
Dim mySolidBrush As New SolidBrush(Color.Red)
myGraphics.FillEllipse(mySolidBrush, 0, 0, 60, 40)
Заметка
В предыдущем примере кисть имеет тип SolidBrush, который наследуется от Brush.
Кисти для штриховки
При заполнении фигуры штриховой кистью вы указываете цвет переднего плана, цвет фона и стиль штриховки. Цвет переднего плана — это цвет штриховки.
HatchBrush myHatchBrush =
new HatchBrush(HatchStyle.Vertical, Color.Blue, Color.Green);
Dim myHatchBrush As _
New HatchBrush(HatchStyle.Vertical, Color.Blue, Color.Green)
GDI+ предоставляет более 50 стилей штриховки; три стиля, показанные на следующем рисунке, это Horizontal, ForwardDiagonalи Cross.
Текстурные кисти
С помощью кисти текстуры можно заполнить фигуру шаблоном, хранящимся в растровом рисунке. Например, предположим, что следующий рисунок хранится в файле диска с именем MyTexture.bmp
.
В следующем примере кода показано, как заполнить многоточие, повторяя рисунок, хранящийся в MyTexture.bmp
.
Image myImage = Image.FromFile("MyTexture.bmp");
TextureBrush myTextureBrush = new TextureBrush(myImage);
myGraphics.FillEllipse(myTextureBrush, 0, 0, 100, 50);
Dim myImage As Image = Image.FromFile("MyTexture.bmp")
Dim myTextureBrush As New TextureBrush(myImage)
myGraphics.FillEllipse(myTextureBrush, 0, 0, 100, 50)
На следующем рисунке показан заполненный эллипс.
Градиентные заливки
GDI+ предоставляет два типа градиентных кистей: линейные и пути. Вы можете использовать линейный градиент, чтобы заполнить фигуру цветом, который постепенно изменяется по мере перемещения по горизонтали, вертикали или диагонали. В следующем примере кода показано, как заполнить многоточие горизонтальной градиентной кистью, которая изменяется с синего на зеленый при переходе с левого края эллипса на правый край.
LinearGradientBrush myLinearGradientBrush = new LinearGradientBrush(
myRectangle,
Color.Blue,
Color.Green,
LinearGradientMode.Horizontal);
myGraphics.FillEllipse(myLinearGradientBrush, myRectangle);
Dim myLinearGradientBrush As New LinearGradientBrush( _
myRectangle, _
Color.Blue, _
Color.Green, _
LinearGradientMode.Horizontal)
myGraphics.FillEllipse(myLinearGradientBrush, myRectangle)
На следующем рисунке показан заполненный эллипс.
Кисть с градиентом вдоль пути может быть настроена для изменения цвета по мере перехода от центра фигуры к её краю.
Градиенты по пути достаточно гибкие. Градиентная кисть, используемая для заполнения треугольника на следующем рисунке, постепенно изменяется от красного в центре к каждому из трех разных цветов вершин.
См. также
.NET Desktop feedback