Поделиться через


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

Обновлен: Ноябрь 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.

См. также

Основные понятия

Контуры в GDI+

Ссылки

GraphicsPath