Трусов М. А. Visual Basic .NET. Создание графических объектов и основы программирования стр.39
Трусов М. А. Visual Basic .NET. Создание графических объектов и основы программирования стр.39

path.AddBezier(20, 20, 100, 100, 220, 100, 320, 20)

path.AddBezier(320, 20, 300, 60, 280, 120, 220, 150)

path.AddLine(220, 150, 250, 200)

path.AddLine(250, 200, 90, 200)

path.AddLine(90, 200, 120, 150)

path.AddBezier(120, 150, 60, 120, 40, 60, 20, 20)

"e.Graphics.DrawPath(New Pen(Color.Red, 3), path)

Dim brush As New System.Drawing.Drawing2D. _

PathGradientBrush(path)

brush.CenterColor = Color.LightYellow

brush.CenterPoint = New PointF(170, 120)

DimgradO As Color = {Color.FromArgb(255, 105, 0, 0)}

brush.SurroundColors = grad

e.Graphics.FillPath(brush, path)

При помощи данного кода было создано изображение, пред-ставленое на рис. 5.3.

Теперь рассмотрим содержание этого кода. Важным моментом является определение параметров центральной точки - ее координат и цвета. Дело в том, что распределение

Трусов М. А. Visual Basic .NET. Создание графических объектов и основы программирования

ГЛАВА S ▼ Заливка изображения

Трусов М. А. Visual Basic .NET. Создание графических объектов и основы программирования

Рис. 5.3 т Градиентная заливка патча

цвета в градиентной заливке происходит от центральной точки к линиям и вершинам патча. Поэтому, в первую очередь, определяются координаты центральной точки (CenterPoint), ее цвет (CenterColor), а затем цвет точек пути (SurroundColors). При этом центральная точка не обязательно должна располагаться в центре тяжести фигуры.

Кроме перечисленных свойств рассмотрим также свойство FocusScales. Оно определяет область, на которую распространяется цвет центральной точки. Добавьте строку brush.FocusScales = New PointF(0.5, 0.5) в качестве предпоследней строки предыдущего кода. Заливка приобретет вид, который имеет ромб на рис. 5.4.

Dim point() As Point = {New Point(100, 20), New Point _

(50, 120), New Point(100, 220), New Point(150, 120)}

Dim brush As New System.Drawing.Drawing2D. _

PathGradientBrush(point)

brush.CenterPoint = New PointF(100, 120)

brush.CenterColor = Color.Gold

Dim col() As Color = {Color.FromArgb(55, 0, 0)}

brush.SurroundColors = col

brush.FocusScales = New PointF(0.5, 0.5)

e.Graphics.FillPolygon(brush, point)

PathCradientBrush

И напоследок еще два метода: SetBlendTrianqularShape и SetSigmaBellShape. Эти методы определяют вид и размеры центральной точки. Они имеют параметры focus и scale, определяющие интенсивность цвета. Параметр scale определяет интенсивность цвета в центральной точке, а параметр focus - расстояние от центральной точки, где интенсивность того же цвета будет максимальной. Коды в данном случае выглядят так:


⇐ Предыдущая Следующая ⇒
 
 
 
Powered by Exponenta