Практическое руководство. Заливка открытых фигур
Контур можно заполнить путем передачи объекта GraphicsPath методу FillPath. Метод FillPath заполняет контур в соответствии с заданным для него режимом заполнения (чередующимся или обмоткой). Если контур имеет открытые фигуры, то он будет заполнен так, как если бы эти фигуры были закрыты. GDI+ закрывает фигуру путем рисования прямой линии от конечной точки до начальной точки.
Пример
В следующем примере создается контур с одной открытой фигурой (дугой) и одной закрытой (эллипсом). Метод FillPath заполняет контур в соответствии с режимом заполнения по умолчанию (в данном случае — Alternate).
На следующем рисунке показан результат выполнения этого примера код. Обратите внимание, что путь заполняется (в соответствии с Alternate) как если бы открытая фигура была закрыта прямой линией от конечной точки до начальной точки.
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 и требуется PaintEventArgs e
, что является параметром обработчика Paint событий.
См. также
.NET Desktop feedback