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


Незамкнутые и замкнутые кривые

На приведенном ниже рисунке изображены две кривые: открытая и замкнутая.

иллюстрация открытой кривой (изогнутая линия) и закрытой кривой (контур фигуры)

У замкнутых кривых есть внутренняя область, которую можно залить с использованием кисти. Класс 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 , который закрашивает внутренние элементы символов в строке.

иллюстрация, дважды показывающая текст и открытую и закрытую кривую; они пусты в первый раз, а заполняются во второй раз.