Практическое руководство. Заливка открытых фигур
Обновлен: Ноябрь 2007
Для заливки контура необходимо передать объект GraphicsPath методу FillPath. Метод FillPath осуществляет заливку контура в соответствии с режимом заливки (альтернативным режимом или режимом заполнения), установленным для этого контура. Если контур содержит незамкнутые фигуры, то заливка происходит так, как если бы фигуры были замкнутыми. Интерфейс GDI+ замыкает фигуру с помощью прямой линии, соединяющей начальную и конечную точки.
Пример
В следующем примере создается контур, содержащий одну открытую фигуру (дугу) и одну замкнутую фигуру (эллипс). Метод FillPath производит заливку пути в соответствии с режимом заливки, принятым по умолчанию, т. е. Alternate.
На следующем рисунке показан результат выполнения примера кода. Следует обратить внимание, что контур заполняется (в соответствии с Alternate) так, как будто открытая фигура замкнута с помощью прямого отрезка, соединяющего ее конечную и начальную точки.
Dim path As New GraphicsPath()
' Add an open figure.
path.AddArc(0, 0, 150, 120, 30, 120)
' Add an intrinsically closed figure.
path.AddEllipse(50, 50, 50, 100)
Dim pen As New Pen(Color.FromArgb(128, 0, 0, 255), 5)
Dim brush As New SolidBrush(Color.Red)
' The fill mode is FillMode.Alternate by default.
e.Graphics.FillPath(brush, path)
e.Graphics.DrawPath(pen, path)
GraphicsPath path = new GraphicsPath();
// Add an open figure.
path.AddArc(0, 0, 150, 120, 30, 120);
// Add an intrinsically closed figure.
path.AddEllipse(50, 50, 50, 100);
Pen pen = new Pen(Color.FromArgb(128, 0, 0, 255), 5);
SolidBrush brush = new SolidBrush(Color.Red);
// The fill mode is FillMode.Alternate by default.
e.Graphics.FillPath(brush, path);
e.Graphics.DrawPath(pen, path);
Компиляция кода
Предыдущий пример предназначен для работы с Windows Forms, для него необходим объект PaintEventArgs e, передаваемый в качестве параметра обработчику события Paint.