Класс QPainterPath
Класс QPainterPath предоставляет контейнер для операций рисования, позволяющий создавать и повторно использовать графические фигуры. Подробнее...
| Заголовок: | #include <QPainterPath> |
| CMake: | find_package(Qt6 COMPONENTS Gui REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
Открытые типы
| класс | Элемент |
| перечисление | ТипЭлемента { MoveToElement, LineToElement, CurveToElement, CurveToDataElement } |
Открытые функции
| QPainterPath(const QPainterPath &path) | |
| QPainterPath(const QPointF &startPoint) | |
| QPainterPath() | |
| QPainterPath & | operator=(QPainterPath &&other) |
| QPainterPath & | operator=(const QPainterPath &path) |
| ~QPainterPath() | |
| void | addEllipse(const QRectF &boundingRectangle) |
| void | addEllipse(qreal x, qreal y, qreal width, qreal height) |
| void | addEllipse(const QPointF ¢er, qreal rx, qreal ry) |
| void | addPath(const QPainterPath &path) |
| void | addPolygon(const QPolygonF &polygon) |
| void | addRect(const QRectF &rectangle) |
| void | addRect(qreal x, qreal y, qreal width, qreal height) |
| void | addRegion(const QRegion ®ion) |
| void | addRoundedRect(const QRectF &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize) |
| void | addRoundedRect(qreal x, qreal y, qreal w, qreal h, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize) |
| void | addText(const QPointF &point, const QFont &font, const QString &text) |
| void | addText(qreal x, qreal y, const QFont &font, const QString &text) |
| qreal | angleAtPercent(qreal t) const |
| void | arcMoveTo(const QRectF &rectangle, qreal angle) |
| void | arcMoveTo(qreal x, qreal y, qreal width, qreal height, qreal angle) |
| void | arcTo(const QRectF &rectangle, qreal startAngle, qreal sweepLength) |
| void | arcTo(qreal x, qreal y, qreal width, qreal height, qreal startAngle, qreal sweepLength) |
| QRectF | boundingRect() const |
| int | capacity() const |
| void | clear() |
| void | closeSubpath() |
| void | connectPath(const QPainterPath &path) |
| bool | contains(const QPointF &point) const |
| bool | contains(const QRectF &rectangle) const |
| bool | contains(const QPainterPath &p) const |
| QRectF | controlPointRect() const |
| void | cubicTo(const QPointF &c1, const QPointF &c2, const QPointF &endPoint) |
| void | cubicTo(qreal c1X, qreal c1Y, qreal c2X, qreal c2Y, qreal endPointX, qreal endPointY) |
| QPointF | currentPosition() const |
| QPainterPath::Element | elementAt(int index) const |
| int | elementCount() const |
| Qt::FillRule | fillRule() const |
| QPainterPath | intersected(const QPainterPath &p) const |
| bool | intersects(const QRectF &rectangle) const |
| bool | intersects(const QPainterPath &p) const |
| bool | isEmpty() const |
| qreal | length() const |
| void | lineTo(const QPointF &endPoint) |
| void | lineTo(qreal x, qreal y) |
| void | moveTo(const QPointF &point) |
| void | moveTo(qreal x, qreal y) |
| qreal | percentAtLength(qreal len) const |
| QPointF | pointAtPercent(qreal t) const |
| void | quadTo(const QPointF &c, const QPointF &endPoint) |
| void | quadTo(qreal cx, qreal cy, qreal endPointX, qreal endPointY) |
| void | reserve(int size) |
| void | setElementPositionAt(int index, qreal x, qreal y) |
| void | setFillRule(Qt::FillRule fillRule) |
| QPainterPath | simplified() const |
| qreal | slopeAtPercent(qreal t) const |
| QPainterPath | вычтенная(const QPainterPath &p) const |
| void | обмен(QPainterPath &other) |
| QPolygonF | toFillPolygon(const QTransform &matrix = QTransform()) const |
| QList<QPolygonF> | toFillPolygons(const QTransform &matrix = QTransform()) const |
| QPainterPath | обращенная() const |
| QList<QPolygonF> | toSubpathPolygons(const QTransform &matrix = QTransform()) const |
| void | сместить(qreal dx, qreal dy) |
| void | сместить(const QPointF &offset) |
| QPainterPath | смещенная(qreal dx, qreal dy) const |
| QPainterPath | смещенная(const QPointF &offset) const |
| QPainterPath | объединённая(const QPainterPath &p) const |
| bool | не равна(const QPainterPath &path) const |
| QPainterPath | пересечение(const QPainterPath &other) const |
| QPainterPath & | пересечение(const QPainterPath &other) |
| QPainterPath | объединение(const QPainterPath &other) const |
| QPainterPath & | объединение(const QPainterPath &other) |
| QPainterPath | вычитание(const QPainterPath &other) const |
| QPainterPath & | вычитание(const QPainterPath &other) |
| bool | равна(const QPainterPath &path) const |
| QPainterPath | объединение(const QPainterPath &other) const |
| QPainterPath & | объединение(const QPainterPath &other) |
Связанные нечлены
| QDataStream & | operator<<(QDataStream &stream, const QPainterPath &path) |
| QDataStream & | operator>>(QDataStream &stream, QPainterPath &path) |
Подробное описание
Путь рисования — это объект, состоящий из ряда графических элементов, таких как прямоугольники, эллипсы, линии и кривые. Элементы могут быть объединены в замкнутые подпути, например, в виде прямоугольника или эллипса. Замкнутый путь имеет совпадающие начальную и конечную точки. Или они могут существовать независимо в виде незамкнутых подпутей, таких как линии и кривые.
Объект QPainterPath может использоваться для заливки, обводки и обрезки. Для создания заливаемых контуров заданного пути рисования используйте класс QPainterPathStroker. Основное преимущество использования путей рисования по сравнению с обычными операциями рисования заключается в том, что сложные формы необходимо создавать только один раз; затем их можно рисовать многократно, используя только вызов функции QPainter::drawPath().
QPainterPath предоставляет набор функций, которые можно использовать для получения информации о пути и его элементах. Кроме того, возможно изменить порядок элементов с помощью функции обращенной(). Также есть несколько функций для преобразования этого объекта пути рисования в представление многоугольника.
Составление QPainterPath
Объект QPainterPath можно создать как пустой путь, с заданной начальной точкой или как копию другого объекта QPainterPath. После создания линии и кривые можно добавить в путь с помощью функций lineTo(), arcTo(), cubicTo() и quadTo(). Линии и кривые простираются от текущей позиции текущая позиция() до позиции, переданной в качестве аргумента.
Текущая позиция текущая позиция() объекта QPainterPath всегда является конечной позицией последнего подпути, который был добавлен (или начальной точкой). Используйте функцию moveTo(), чтобы переместить текущую позицию() без добавления компонента. Функция moveTo() неявным образом начинает новый подпуть и закрывает предыдущий. Другой способ начать новый подпуть — вызвать функцию closeSubpath(), которая закрывает текущий путь, добавив линию от текущей позиции() обратно в начальную позицию пути. Обратите внимание, что новый путь будет иметь (0, 0) в качестве начальной текущей позиции().
Класс QPainterPath также предоставляет несколько удобных функций для добавления замкнутых подпутей в путь рисования: addEllipse(), addPath(), addRect(), addRegion() и addText(). Функция addPolygon() добавляет незамкнутый подпуть. Фактически, эти функции представляют собой набор операций moveTo(), lineTo() и cubicTo().
Кроме того, путь можно добавить к текущему пути с помощью функции connectPath(). Но обратите внимание, что эта функция соединит последний элемент текущего пути с первым элементом заданного пути, добавив линию.
Ниже приведен фрагмент кода, показывающий, как можно использовать объект QPainterPath:
QPainterPath path;
path.addRect(20, 20, 60, 60);
path.moveTo(0, 0);
path.cubicTo(99, 0, 50, 50, 99, 99);
path.cubicTo(0, 99, 50, 50, 0, 0);
QPainter painter(this);
painter.fillRect(0, 0, 100, 100, Qt::white);
painter.setPen(QPen(QColor(79, 106, 25), 1, Qt::SolidLine,
Qt::FlatCap, Qt::MiterJoin));
painter.setBrush(QColor(122, 163, 39));
painter.drawPath(path); |
Путь рисования изначально пуст при создании. Сначала мы добавляем прямоугольник, который является замкнутым подпутем. Затем мы добавляем две кривые Безье, которые вместе образуют замкнутый подпуть, даже если они не замкнуты индивидуально. Наконец, мы рисуем весь путь. Путь заполняется с помощью правила заливки по умолчанию Qt::OddEvenFill. Qt предоставляет два метода для заполнения путей:
| Qt::OddEvenFill | Qt::WindingFill |
|---|---|
См. документацию по Qt::FillRule для определения правил. Текущее правило заливки пути рисования можно получить с помощью функции fillRule() и изменить с помощью функции setFillRule().
Информация о QPainterPath
Класс QPainterPath предоставляет набор функций, которые возвращают информацию о пути и его элементах.
Функция currentPosition() возвращает конечную точку последнего добавленного подпути (или начальную точку). Функция elementAt() может использоваться для извлечения различных элементов подпути, количество элементов можно получить с помощью функции elementCount(), а функция isEmpty() указывает, содержит ли этот объект QPainterPath вообще какие-либо элементы.
Функция controlPointRect() возвращает прямоугольник, содержащий все точки и точки управления в этом пути. Эта функция значительно быстрее для вычисления, чем точная функция boundingRect(), которая возвращает ограничивающий прямоугольник этого пути рисования с плавающей точкой.
Наконец, QPainterPath предоставляет функцию contains(), которая может использоваться для определения, находится ли заданная точка или прямоугольник внутри пути, и функцию intersects(), которая определяет, пересекаются ли какие-либо точки внутри заданного прямоугольника с точками внутри этого пути.
Преобразование QPainterPath
По соображениям совместимости, возможно потребуется упростить представление пути рисования: QPainterPath предоставляет функции toFillPolygon(), toFillPolygons() и toSubpathPolygons() для преобразования пути рисования в многоугольник. Функция toFillPolygon() возвращает путь рисования как один многоугольник, в то время как две последние функции возвращают список многоугольников.
Функции toFillPolygons() и toSubpathPolygons() предоставляются потому, что обычно быстрее отрисовывать несколько маленьких многоугольников, чем один большой, даже если общее количество отрисованных точек одинаково. Разница между ними заключается в количестве возвращаемых многоугольников: toSubpathPolygons() создает один многоугольник для каждого подпути независимо от пересекающихся подпутей (т. е. перекрывающихся ограничительных прямоугольников), в то время как функция toFillPolygons() создает только один многоугольник для перекрывающихся подпутей.
Функции toFillPolygon() и toFillPolygons() сначала преобразуют все подпути в многоугольники, а затем используют технику перемотки, чтобы убедиться, что перекрывающиеся подпути можно заполнить с использованием правильного правила заполнения. Обратите внимание, что перемотка вставляет дополнительные линии в многоугольник, поэтому контур заполненного многоугольника не совпадает с контуром пути.
Примеры
Qt предоставляет Пример Painter Paths и Пример деформации векторов, которые находятся в каталоге примеров Qt.
Пример Painter Paths демонстрирует, как можно использовать пути рисования для создания сложных форм для рендеринга и позволяет пользователю экспериментировать с заливкой и обводкой. Пример деформации векторов демонстрирует, как использовать QPainterPath для рисования текста.
| Пример Painter Paths | Пример деформации векторов |
|---|---|
См. также QPainterPathStroker, QPainter, QRegion и Пример Painter Paths.
Документация типов членов
перечисление QPainterPath::ElementType
Это перечисление описывает типы элементов, используемых для соединения вершин в подпутях.
Обратите внимание, что элементы, добавленные как замкнутые подпути с помощью удобных функций addEllipse(), addPath(), addPolygon(), addRect(), addRegion() и addText(), фактически добавляются в путь в виде набора отдельных элементов с использованием функций moveTo(), lineTo() и cubicTo().
| Константа | Значение | Описание |
|---|---|---|
QPainterPath::MoveToElement |
0 |
Новый подпуть. См. также moveTo(). |
QPainterPath::LineToElement |
1 |
Линия. См. также lineTo(). |
QPainterPath::CurveToElement |
2 |
Кривая. См. также cubicTo() и quadTo(). |
QPainterPath::CurveToDataElement |
3 |
Дополнительные данные, необходимые для описания кривой в элементе CurveToElement. |
См. также elementAt() и elementCount().
Документация функций-членов
QPainterPath::QPainterPath(const QPainterPath &path)
Создает объект QPainterPath, являющийся копией заданного path.
См. также operator=().
QPainterPath::QPainterPath(const QPointF &startPoint)
Создает объект QPainterPath с заданной startPoint в качестве текущей позиции.
QPainterPath::QPainterPath()
Конструирует пустой объект QPainterPath.
[since 5.2] QPainterPath &QPainterPath::operator=(QPainterPath &&other)
Перемещающее присваивание other этому экземпляру QPainterPath.
Эта функция была добавлена в Qt 5.2.
QPainterPath &QPainterPath::operator=(const QPainterPath &path)
Присваивает заданный path этому пути рисования.
См. также QPainterPath().
QPainterPath::~QPainterPath()
Уничтожает этот объект QPainterPath.
void QPainterPath::addEllipse(const QRectF &boundingRectangle)
Создает эллипс внутри указанного boundingRectangle и добавляет его в путь рисования как замкнутый подпуть.
Эллипс состоит из кривой по часовой стрелке, начинающейся и заканчивающейся в нуле градусов (положение в 3 часа).
QLinearGradient myGradient; QPen myPen; QRectF boundingRectangle; QPainterPath myPath; myPath.addEllipse(boundingRectangle); QPainter painter(this); painter.setBrush(myGradient); painter.setPen(myPen); painter.drawPath(myPath); |
См. также arcTo(), QPainter::drawEllipse() и Создание QPainterPath.
void QPainterPath::addEllipse(qreal x, qreal y, qreal width, qreal height)
Это перегруженная функция.
Создает эллипс внутри ограничительного прямоугольника, заданного его верхним левым углом в координатах (x, y), width и height, и добавляет его в путь рисования как замкнутый подпуть.
void QPainterPath::addEllipse(const QPointF ¢er, qreal rx, qreal ry)
Это перегруженная функция.
Создает эллипс, расположенный в точке center с радиусами rx и ry, и добавляет его в путь рисования как замкнутый подпуть.
void QPainterPath::addPath(const QPainterPath &path)
Добавляет заданный path в этот путь как замкнутый подпуть.
См. также connectPath() и Создание QPainterPath.
void QPainterPath::addPolygon(const QPolygonF &polygon)
Добавляет заданный polygon в путь как (незакрытый) подпуть.
Обратите внимание, что текущая позиция после добавления многоугольника — это последняя точка в polygon. Чтобы провести линию обратно к первой точке, используйте функцию closeSubpath().
QLinearGradient myGradient; QPen myPen; QPolygonF myPolygon; QPainterPath myPath; myPath.addPolygon(myPolygon); QPainter painter(this); painter.setBrush(myGradient); painter.setPen(myPen); painter.drawPath(myPath); |
См. также lineTo() и Создание QPainterPath.
void QPainterPath::addRect(const QRectF &rectangle)
Добавляет заданный rectangle в этот путь как замкнутый подпуть.
rectangle добавляется как набор линий по часовой стрелке. Текущая позиция пути рисования после добавления rectangle — в верхнем левом углу прямоугольника.
QLinearGradient myGradient; QPen myPen; QRectF myRectangle; QPainterPath myPath; myPath.addRect(myRectangle); QPainter painter(this); painter.setBrush(myGradient); painter.setPen(myPen); painter.drawPath(myPath); |
См. также addRegion(), lineTo() и Создание QPainterPath.
void QPainterPath::addRect(qreal x, qreal y, qreal width, qreal height)
Это перегруженная функция.
Добавляет прямоугольник в позиции (x, y) с заданной width и height как замкнутый подпуть.
void QPainterPath::addRegion(const QRegion ®ion)
Добавляет заданную region в путь, добавив каждый прямоугольник в области в виде отдельного замкнутого подпути.
См. также addRect() и Создание QPainterPath.
void QPainterPath::addRoundedRect(const QRectF &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize)
Добавляет заданный прямоугольник rect с закруглёнными углами в путь.
Аргументы xRadius и yRadius задают радиусы эллипсов, определяющих углы закруглённого прямоугольника. Когда mode равен Qt::RelativeSize, xRadius и yRadius задаются в процентах от половины ширины и высоты прямоугольника соответственно и должны находиться в диапазоне от 0,0 до 100,0.
См. также addRect().
void QPainterPath::addRoundedRect(qreal x, qreal y, qreal w, qreal h, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize)
Это перегруженный метод.
Добавляет заданный прямоугольник x, y, w, h с закруглёнными углами в путь.
void QPainterPath::addText(const QPointF &point, const QFont &font, const QString &text)
Добавляет заданный текст text в этот путь в виде набора замкнутых подпутей, созданных из указанного шрифта font. Подпути размещаются так, чтобы левый край базовой линии текста располагался в заданной точке point.
QLinearGradient myGradient;
QPen myPen;
QFont myFont;
QPointF baseline(x, y);
QPainterPath myPath;
myPath.addText(baseline, myFont, tr("Qt"));
QPainter painter(this);
painter.setBrush(myGradient);
painter.setPen(myPen);
painter.drawPath(myPath); |
См. также QPainter::drawText() и Создание QPainterPath.
void QPainterPath::addText(qreal x, qreal y, const QFont &font, const QString &text)
Это перегруженный метод.
Добавляет заданный текст text в этот путь в виде набора замкнутых подпутей, созданных из указанного шрифта font. Подпути размещаются так, чтобы левый край базовой линии текста располагался в точке (x, y).
qreal QPainterPath::angleAtPercent(qreal t) const
Возвращает угол касательной к пути в заданном проценте t. Аргумент t должен находиться в диапазоне от 0 до 1.
Положительные значения углов означают против часовой стрелки, а отрицательные — по часовой стрелке. Ноль градусов соответствует положению «3 часа».
Обратите внимание, что, аналогично другим методам с процентами, измерение процентов не является линейным относительно длины, если в пути присутствуют кривые. При наличии кривых аргумент процента отображается в параметре t уравнений Безьер.
void QPainterPath::arcMoveTo(const QRectF &rectangle, qreal angle)
Создаёт перемещение на дуге, занимающей заданный прямоугольник rectangle в угле angle.
Углы задаются в градусах. Дуги по часовой стрелке можно задавать с помощью отрицательных углов.
void QPainterPath::arcMoveTo(qreal x, qreal y, qreal width, qreal height, qreal angle)
Это перегруженный метод.
Создаёт перемещение на дуге, занимающей QRectF(x, y, width, height) в угле angle.
void QPainterPath::arcTo(const QRectF &rectangle, qreal startAngle, qreal sweepLength)
Создаёт дугу, занимающую заданный прямоугольник rectangle, начиная с указанного угла startAngle и простираясь на sweepLength градусов против часовой стрелки.
Углы задаются в градусах. Дуги по часовой стрелке можно задавать с помощью отрицательных углов.
Обратите внимание, что эта функция соединяет начальную точку дуги с текущей позицией, если они ещё не соединены. После добавления дуги текущей позицией является последняя точка дуги. Чтобы нарисовать линию обратно к первой точке, используйте функцию closeSubpath().
QPainterPath myPath;
myPath.moveTo(center);
myPath.arcTo(boundingRect, startAngle,
sweepLength);
QPainter painter(this);
painter.setBrush(myGradient);
painter.setPen(myPen);
painter.drawPath(myPath); |
См. также arcMoveTo(), addEllipse(), QPainter::drawArc(), QPainter::drawPie(), и Создание QPainterPath.
void QPainterPath::arcTo(qreal x, qreal y, qreal width, qreal height, qreal startAngle, qreal sweepLength)
Это перегруженный метод.
Создаёт дугу, занимающую прямоугольник QRectF(x, y, width, height), начиная с указанного угла startAngle и простираясь на sweepLength градусов против часовой стрелки.
QRectF QPainterPath::boundingRect() const
Возвращает прямоугольник, охватывающий этот путь, с плавающей точкой.
См. также controlPointRect().
int QPainterPath::capacity() const
Возвращает количество элементов, выделенных для QPainterPath.
Эта функция была добавлена в Qt 5.13.
См. также clear() и reserve().
void QPainterPath::clear()
Очищает элементы пути.
Это позволяет пути повторно использовать предыдущие выделения памяти.
Эта функция была добавлена в Qt 5.13.
См. также reserve() и capacity().
void QPainterPath::closeSubpath()
Закрывает текущий подпуть, нарисовав линию до начала подпути, автоматически начав новый путь. Текущая точка нового пути — (0, 0).
Если подпуть не содержит элементов, эта функция ничего не делает.
См. также moveTo() и Создание QPainterPath.
void QPainterPath::connectPath(const QPainterPath &path)
Подключает данный путь path к текущему пути, добавив линию от последнего элемента текущего пути к первому элементу данного пути.
См. также addPath() и Создание QPainterPath.
bool QPainterPath::contains(const QPointF &point) const
Возвращает true , если заданная точка point находится внутри пути, в противном случае возвращает false.
См. также intersects().
bool QPainterPath::contains(const QRectF &rectangle) const
Возвращает true , если заданный прямоугольник rectangle находится внутри пути, в противном случае возвращает false.
bool QPainterPath::contains(const QPainterPath &p) const
Возвращает true , если заданный путь p содержится внутри текущего пути. Возвращает false , если какие-либо грани текущего пути и p пересекаются.
Операции над путями будут рассматривать пути как области. Незамкнутые пути будут рассматриваться как неявно замкнутые.
См. также intersects().
QRectF QPainterPath::controlPointRect() const
Возвращает прямоугольник, содержащий все точки и контрольные точки в этом пути.
Эта функция значительно быстрее вычисляется, чем точная функция boundingRect(), и возвращаемый прямоугольник всегда является супермножеством прямоугольника, возвращаемого функцией boundingRect().
См. также boundingRect().
void QPainterPath::cubicTo(const QPointF &c1, const QPointF &c2, const QPointF &endPoint)
Добавляет кубическую кривую Безье между текущей позицией и заданной точкой endPoint, используя контрольные точки, указанные c1 и c2.
После добавления кривой текущая позиция обновляется до конечной точки кривой.
QLinearGradient myGradient; QPen myPen; QPainterPath myPath; myPath.cubicTo(c1, c2, endPoint); QPainter painter(this); painter.setBrush(myGradient); painter.setPen(myPen); painter.drawPath(myPath); |
См. также quadTo() и Создание QPainterPath.
void QPainterPath::cubicTo(qreal c1X, qreal c1Y, qreal c2X, qreal c2Y, qreal endPointX, qreal endPointY)
Это перегруженная функция.
Добавляет кубическую кривую Безье между текущей позицией и конечной точкой (endPointX, endPointY) с контрольными точками, заданными (c1X, c1Y) и (c2X, c2Y).
QPointF QPainterPath::currentPosition() const
Возвращает текущую позицию пути.
QPainterPath::Element QPainterPath::elementAt(int index) const
Возвращает элемент по заданному индексу index в пути.
См. также ElementType, elementCount() и isEmpty().
int QPainterPath::elementCount() const
Возвращает количество элементов пути в пути.
См. также ElementType, elementAt() и isEmpty().
Qt::FillRule QPainterPath::fillRule() const
Возвращает текущее значение правила заполнения пути.
См. также setFillRule().
QPainterPath QPainterPath::intersected(const QPainterPath &p) const
Возвращает путь, являющийся пересечением области заполнения текущего пути и области заполнения пути p. Кривые Безье могут быть сглажены до отрезков линий из-за числовой неустойчивости пересечений кривых Безье.
bool QPainterPath::intersects(const QRectF &rectangle) const
Возвращает true если какая-либо точка в заданном прямоугольнике rectangle пересекает путь; в противном случае возвращает false.
Пересечение существует, если любая из линий, составляющих прямоугольник, пересекает часть пути или если какая-либо часть прямоугольника перекрывается с любой областью, заключённой внутри пути. Эта функция учитывает текущее правило заполнения fillRule для определения того, что считается внутри пути.
См. также contains().
bool QPainterPath::intersects(const QPainterPath &p) const
Возвращает true если текущий путь пересекается в любой точке с заданным путем p. Также возвращает true если текущий путь содержит или содержится в любой части p.
Операции над путями будут рассматривать пути как области. Незамкнутые пути будут обрабатываться как неявно замкнутые.
См. также contains().
bool QPainterPath::isEmpty() const
Возвращает true если в этом пути нет элементов или если единственный элемент — MoveToElement; в противном случае возвращает false.
См. также elementCount().
qreal QPainterPath::length() const
Возвращает длину текущего пути.
void QPainterPath::lineTo(const QPointF &endPoint)
Добавляет прямую линию от текущей позиции до заданной точки endPoint. После построения линии текущая позиция обновляется до конечной точки линии.
См. также addPolygon(), addRect() и Создание QPainterPath.
void QPainterPath::lineTo(qreal x, qreal y)
Это перегруженная функция.
Рисует линию от текущей позиции до точки (x, y).
void QPainterPath::moveTo(const QPointF &point)
Перемещает текущую точку в заданную точку point, неявно начиная новую подпуть и закрывая предыдущий.
См. также closeSubpath() и Создание QPainterPath.
void QPainterPath::moveTo(qreal x, qreal y)
Это перегруженная функция.
Перемещает текущую позицию в (x, y) и начинает новый подпуть, неявно закрывая предыдущий путь.
qreal QPainterPath::percentAtLength(qreal len) const
Возвращает процент от всего пути по заданной длине len.
Обратите внимание, что, аналогично другим методам процентов, измерение процента не является линейным по отношению к длине, если в пути присутствуют кривые. При наличии кривых аргумент процента отображается на параметр t уравнений Безье.
QPointF QPainterPath::pointAtPercent(qreal t) const
Возвращает точку по проценту t текущего пути. Аргумент t должен быть от 0 до 1.
Обратите внимание, что, аналогично другим методам процентов, измерение процента не является линейным по отношению к длине, если в пути присутствуют кривые. При наличии кривых аргумент процента отображается на параметр t уравнений Безье.
void QPainterPath::quadTo(const QPointF &c, const QPointF &endPoint)
Добавляет квадратичную кривую Безье между текущей позицией и заданной конечной точкой endPoint с контрольной точкой, заданной c.
После добавления кривой текущая точка обновляется до конечной точки кривой.
См. также cubicTo() и Создание QPainterPath.
void QPainterPath::quadTo(qreal cx, qreal cy, qreal endPointX, qreal endPointY)
Это перегруженная функция.
Добавляет квадратичную кривую Безье между текущей точкой и конечной точкой (endPointX, endPointY) с контрольной точкой, заданной (cx, cy).
[since 5.13] void QPainterPath::reserve(int size)
Зарезервировать определенное количество элементов в внутренней памяти QPainterPath.
Попытка выделить память для, по крайней мере, size элементов.
Эта функция была добавлена в Qt 5.13.
См. также clear(), capacity() и QList::reserve().
void QPainterPath::setElementPositionAt(int index, qreal x, qreal y)
Устанавливает координаты x и y элемента с индексом index на x и y.
void QPainterPath::setFillRule(Qt::FillRule fillRule)
Устанавливает правило заполнения пути на заданное значение fillRule. Qt предоставляет два метода заполнения путей:
| Qt::OddEvenFill (по умолчанию) | Qt::WindingFill |
|---|---|
См. также fillRule().
QPainterPath QPainterPath::simplified() const
Возвращает упрощенную версию этого пути. Это подразумевает слияние всех подпутей, которые пересекаются, и возвращает путь без пересекающихся линий. Последовательные параллельные линии также будут объединены. Упрощенный путь всегда будет использовать стандартное правило заполнения Qt::OddEvenFill. Кривые Безье могут быть сглажены до отрезков прямых из-за числовой нестабильности при пересечении кривых Безье.
qreal QPainterPath::slopeAtPercent(qreal t) const
Возвращает наклон пути в процентах t. Аргумент t должен быть в диапазоне от 0 до 1.
Обратите внимание, что, аналогично другим методам процентов, измерение процентов не является линейным по отношению к длине, если в пути присутствуют кривые. При наличии кривых аргумент процентов отображается в параметр t уравнений Безье.
QPainterPath QPainterPath::subtracted(const QPainterPath &p) const
Возвращает путь, в котором область заполнения p вычитается из области заполнения этого пути.
Операции над путями будут рассматривать пути как области. Незамкнутые пути будут обрабатываться как неявно замкнутые. Кривые Безье могут быть сглажены до отрезков прямых из-за числовой нестабильности при пересечении кривых Безье.
void QPainterPath::swap(QPainterPath &other)
Меняет местами путь рисования other с этим путем рисования. Эта операция очень быстрая и никогда не терпит неудачу.
QPolygonF QPainterPath::toFillPolygon(const QTransform &matrix = QTransform()) const
Преобразует путь в многоугольник, используя матрицу преобразования QTransform matrix, и возвращает многоугольник.
Многоугольник создается путем преобразования всех подпутей в многоугольники, а затем использованием техники перемотки, чтобы убедиться, что перекрывающиеся подпути могут быть заполнены с использованием правильного правила заполнения.
Обратите внимание, что перемотка вставляет дополнительные линии в многоугольник, поэтому контур многоугольника заполнения не совпадает с контуром пути.
См. также toSubpathPolygons(), toFillPolygons(), и Преобразование QPainterPath.
QList<QPolygonF> QPainterPath::toFillPolygons(const QTransform &matrix = QTransform()) const
Преобразует путь в список многоугольников, используя матрицу преобразования QTransform matrix, и возвращает список.
Функция отличается от функции toFillPolygon() тем, что создает несколько многоугольников. Она предоставляется, потому что обычно быстрее рисовать несколько небольших многоугольников, чем один большой, даже если общее количество нарисованных точек одинаково.
Функция toFillPolygons() отличается от функции toSubpathPolygons() тем, что создает только один многоугольник для подпутей, имеющих перекрывающиеся ограничивающие прямоугольники.
Как и функция toFillPolygon(), эта функция использует технику перемотки, чтобы убедиться, что перекрывающиеся подпути могут быть заполнены с использованием правильного правила заполнения. Обратите внимание, что перемотка вставляет дополнительные линии в многоугольники, поэтому контур многоугольника заполнения не совпадает с контуром пути.
См. также toSubpathPolygons(), toFillPolygon(), и Преобразование QPainterPath.
QPainterPath QPainterPath::toReversed() const
Создает и возвращает обращенную копию пути.
Обращается порядок элементов: если QPainterPath составлен с помощью вызовов moveTo(), lineTo() и cubicTo() в указанном порядке, обращенная копия составляется с помощью вызовов cubicTo(), lineTo() и moveTo().
QList<QPolygonF> QPainterPath::toSubpathPolygons(const QTransform &matrix = QTransform()) const
Преобразует путь в список многоугольников, используя матрицу преобразования QTransform matrix, и возвращает список.
Эта функция создает один многоугольник для каждого подпути, независимо от пересекающихся подпутей (т.е. перекрывающихся ограничивающих прямоугольников). Чтобы убедиться, что такие перекрывающиеся подпути заполняются правильно, используйте функцию toFillPolygons() вместо этого.
См. также toFillPolygons(), toFillPolygon(), и Преобразование QPainterPath.
void QPainterPath::translate(qreal dx, qreal dy)
Перемещает все элементы в пути на (dx, dy).
См. также translated().
void QPainterPath::translate(const QPointF &offset)
Это перегруженная функция.
Перемещает все элементы в пути на заданный offset.
См. также translated().
QPainterPath QPainterPath::translated(qreal dx, qreal dy) const
Возвращает копию пути, перемещенную на (dx, dy).
См. также translate().
QPainterPath QPainterPath::translated(const QPointF &offset) const
Это перегруженная функция.
Возвращает копию пути, перемещенную на заданный offset.
См. также translate().
QPainterPath QPainterPath::united(const QPainterPath &p) const
Возвращает путь, являющийся объединением области заполнения этого пути и области заполнения p.
Операции над путями будут рассматривать пути как области. Незамкнутые пути будут обрабатываться как неявно замкнутые. Кривые Безье могут быть сглажены до отрезков прямых из-за числовой нестабильности при пересечении кривых Безье.
См. также intersected() и subtracted().
bool QPainterPath::operator!=(const QPainterPath &path) const
Возвращает true если этот путь рисования отличается от заданного path.
Обратите внимание, что сравнение путей может включать сравнение по каждому элементу, что может быть медленным для сложных путей.
См. также operator==().
QPainterPath QPainterPath::operator&(const QPainterPath &other) const
Возвращает пересечение этого пути и пути other.
См. также intersected(), operator&=(), united(), и operator|().
QPainterPath &QPainterPath::operator&=(const QPainterPath &other)
Пересекает этот путь с other и возвращает ссылку на этот путь.
См. также intersected(), operator&(), и operator|=().
QPainterPath QPainterPath::operator+(const QPainterPath &other) const
Возвращает объединение этого пути и пути other. Эта функция эквивалентна operator|().
См. также united(), operator+=(), и operator-().
QPainterPath &QPainterPath::operator+=(const QPainterPath &other)
Объединяет этот путь с other и возвращает ссылку на этот путь. Это эквивалентно operator|=().
См. также united(), operator+(), и operator-=().
QPainterPath QPainterPath::operator-(const QPainterPath &other) const
Вычитает путь other из копии этого пути и возвращает копию.
См. также subtracted(), operator-=(), и operator+().
QPainterPath &QPainterPath::operator-=(const QPainterPath &other)
Вычитает other из этого пути и возвращает ссылку на этот путь.
См. также subtracted(), operator-(), и operator+=().
bool QPainterPath::operator==(const QPainterPath &path) const
Возвращает true, если этот объект QPainterPath равен заданному пути path.
Обратите внимание, что сравнение путей может включать поэлементное сравнение, что может быть медленным для сложных путей.
См. также operator!=().
QPainterPath QPainterPath::operator|(const QPainterPath &other) const
Возвращает объединение этого пути и пути other.
См. также united(), operator|=(), intersected(), и operator&().
QPainterPath &QPainterPath::operator|=(const QPainterPath &other)
Объединяет этот путь с other и возвращает ссылку на этот путь.
См. также united(), operator|(), и operator&=().
Связанные нечленные функции
QDataStream &operator<<(QDataStream &stream, const QPainterPath &path)
Записывает заданный путь path в заданный поток stream и возвращает ссылку на поток stream.
См. также Сериализация типов данных Qt.
QDataStream &operator>>(QDataStream &stream, QPainterPath &path)
Считывает путь path из заданного потока stream в указанный путь path и возвращает ссылку на поток stream.
См. также Сериализация типов данных Qt.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qpainterpath.html