Практическое руководство. Заливка открытых фигур

Контур можно заполнить путем передачи объекта GraphicsPath методу FillPath. Метод FillPath заполняет контур в соответствии с заданным для него режимом заполнения (чередующимся или обмоткой). Если контур имеет открытые фигуры, то он будет заполнен так, как если бы эти фигуры были закрыты. GDI+ закрывает фигуру путем рисования прямой линии от конечной точки до начальной точки.

Пример

В следующем примере создается контур с одной открытой фигурой (дугой) и одной закрытой (эллипсом). Метод FillPath заполняет контур в соответствии с режимом заполнения по умолчанию (в данном случае — Alternate).

На следующем рисунке показан результат выполнения этого примера код. Обратите внимание, что путь заполняется (в соответствии с Alternate) как если бы открытая фигура была закрыта прямой линией от конечной точки до начальной точки.

Diagram that shows the output of the FillPath method

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);
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)

Компиляция кода

Предыдущий пример предназначен для работы с Windows Forms, и для него необходим объект PaintEventArgse, передаваемый в качестве параметра обработчику событий Paint.

См. также