Незамкнутые и замкнутые кривые
На приведенном ниже рисунке изображены две кривые: открытая и замкнутая.
У замкнутых кривых есть внутренняя область, которую можно залить с использованием кисти. Класс Graphics в Windows GDI+ предоставляет следующие методы заполнения закрытых фигур и кривых: FillRectangle, FillEllipse, FillPie, FillPolygon, FillClosedCurve, Graphics::FillPath и Graphics::FillRegion. При каждом вызове одного из этих методов необходимо передать адрес одного из конкретных типов кистей (SolidBrush, HatchBrush, TextureBrush, LinearGradientBrush или PathGradientBrush) в качестве аргумента.
Метод FillPie является компаньоном по методу DrawArc . Так же, как метод DrawArc рисует часть контура эллипса, метод FillPie заполняет часть внутренней части эллипса. В следующем примере рисуется дуга и заполняется соответствующая часть внутренней части эллипса.
myGraphics.FillPie(&mySolidBrush, 0, 0, 140, 70, 0, 120);
myGraphics.DrawArc(&myPen, 0, 0, 140, 70, 0, 120);
На приведенном ниже рисунке изображена полученная дуга и залитый сектор.
Метод FillClosedCurve является компаньоном метода DrawClosedCurve . Оба метода автоматически замыкают кривую путем соединения конечной и начальной точек. В приведенном ниже примере демонстрируется рисование кривой через точки с координатами (0, 0), (60, 20) и (40, 50). Затем кривая автоматически замыкается путем соединения точки с координатами (40, 50) с начальной точкой с координатами (0, 0), а внутренняя область закрашивается сплошным цветом.
Point myPointArray[] =
{Point(10, 10), Point(60, 20),Point(40, 50)};
myGraphics.DrawClosedCurve(&myPen, myPointArray, 3);
myGraphics.FillClosedCurve(&mySolidBrush, myPointArray, 3, FillModeAlternate)
Путь может состоять из нескольких фигур (подпутей). Метод Graphics::FillPath заполняет внутреннюю часть каждого рисунка. Если рисунок не закрыт, метод Graphics::FillPath заполняет область, которая была бы заключена, если бы рисунок был закрыт. В следующем примере рисуется и заполняется путь, состоящий из дуги, кратного сплайна, строки и круговой диаграммы.
myGraphics.FillPath(&mySolidBrush, &myGraphicsPath);
myGraphics.DrawPath(&myPen, &myGraphicsPath);
На следующем рисунке показан путь до и после его заполнения сплошной кистью. Обратите внимание, что текст в строке контурируется, но не заполняется методом Graphics::D rawPath . Это метод Graphics::FillPath , который закрашивает внутренние элементы символов в строке.