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


Заполнение открытых фигур

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

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

GraphicsPath path;

// 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(Color(128, 0, 0, 255), 5);
SolidBrush brush(Color(255, 255, 0, 0));

// The fill mode is FillModeAlternate by default.
graphics.FillPath(&brush, &path);
graphics.DrawPath(&pen, &path);

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

иллюстрация, показывающая высокий эллипс, перекрывающий нижнюю половину широкого эллипса; объединение заполнено, но пересечение пусто