Класс QPainterPath
Класс QPainterPath предоставляет контейнер для операций рисования, позволяя создавать и повторно использовать графические фигуры. Подробнее...
| Заголовок: | #include <QPainterPath> |
| 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 = ...) |
| 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) const |
| QPolygonF | toFillPolygon(const QMatrix &matrix = QMatrix()) const |
| QList<QPolygonF> | toFillPolygons(const QTransform &matrix) const |
| QList<QPolygonF> | toFillPolygons(const QMatrix &matrix = QMatrix()) const |
| QPainterPath | обратить() const |
| QList<QPolygonF> | toSubpathPolygons(const QTransform &matrix) const |
| QList<QPolygonF> | toSubpathPolygons(const QMatrix &matrix = QMatrix()) 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 Example демонстрирует, как можно использовать пути рисования для построения сложных форм для отрисовки, и позволяет пользователю экспериментировать с заливкой и обводкой. Пример Vector Deformation Example демонстрирует, как использовать QPainterPath для отрисовки текста.
| Пример Painter Paths | Пример деформации векторов |
|---|---|
См. также QPainterPathStroker, QPainter, QRegion и Пример Painter Paths.
Документация по типам членов
enum 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.
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 и добавляет его в путь рисования как замкнутый подпуть.
Эта функция была представлена в Qt 4.4.
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 в этот путь как замкнутый подпуть.
Прямоугольник добавляется как набор линий по часовой стрелке. Текущая позиция пути рисования после добавления прямоугольника находится в верхнем левом углу прямоугольника.
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.
END_OF_DOCUMENT_MARKERvoid 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.
Эта функция была добавлена в Qt 4.4.
См. также addRect().
void QPainterPath::addRoundedRect(qreal x, qreal y, qreal w, qreal h, qreal xRadius, qreal yRadius, Qt::SizeMode mode = ...)
Это перегруженный метод.
Добавляет заданный прямоугольник x, y, w, h с закругленными углами к пути.
Эта функция была добавлена в Qt 4.4.
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.
Углы задаются в градусах. Дуги по часовой стрелке можно задать с помощью отрицательных углов.
Эта функция была добавлена в Qt 4.2.
void QPainterPath::arcMoveTo(qreal x, qreal y, qreal width, qreal height, qreal angle)
Это перегруженный метод.
Создаёт перемещение, которое лежит на дуге, занимающей QRectF(x, y, width, height) в угле angle.
Эта функция была добавлена в Qt 4.2.
void QPainterPath::arcTo(const QRectF &rectangle, qreal startAngle, qreal sweepLength)
Создаёт дугу, занимающую заданный rectangle, начиная с указанного startAngle и простираясь на sweepLength градусов против часовой стрелки.
Углы задаются в градусах. Дуги по часовой стрелке можно задать с помощью отрицательных углов.
Обратите внимание, что эта функция соединяет начальную точку дуги с текущей позицией, если они ещё не соединены. После добавления дуги текущая позиция является последней точкой дуги. Чтобы нарисовать линию обратно в первую точку, используйте функцию closeSubpath().
QLinearGradient myGradient;
QPen myPen;
QPointF center, startPoint;
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 пересекаются.
Операции над путями будут рассматривать пути как области. Незамкнутые пути будут обрабатываться как неявно замкнутые.
Эта функция была добавлена в Qt 4.3.
См. также 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. Кривые Безье могут быть сглажены до отрезков линий из-за числовой неустойчивости при пересечении кривых Безье.
Эта функция была добавлена в Qt 4.3.
bool QPainterPath::intersects(const QRectF &rectangle) const
Возвращает true если какая-либо точка в заданном rectangle пересекает путь; в противном случае возвращает false.
Пересечение происходит, если любая из линий, составляющих прямоугольник, пересекает часть пути, или если какая-либо часть прямоугольника перекрывает любую область, ограниченную путем. Эта функция учитывает текущее fillRule, чтобы определить, что считается внутри пути.
См. также contains().
bool QPainterPath::intersects(const QPainterPath &p) const
Возвращает true если текущий путь пересекается в любой точке с заданным путем p. Также возвращает true если текущий путь содержит или содержится в любой части p.
Операции над путями будут рассматривать пути как области. Незамкнутые пути будут обрабатываться как неявно замкнутые.
Эта функция была добавлена в Qt 4.3.
См. также 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).
void QPainterPath::reserve(int size)
Зарезервировать заданное количество элементов в внутренней памяти QPainterPath.
Попытаться выделить память как минимум для size элементов.
Эта функция была добавлена в Qt 5.13.
См. также clear(), capacity() и QVector::reserve().
void QPainterPath::setElementPositionAt(int index, qreal x, qreal y)
Устанавливает координаты x и y элемента по индексу index на x и y.
Эта функция была добавлена в Qt 4.2.
END_OF_DOCUMENT_MARKERvoid QPainterPath::setFillRule(Qt::FillRule fillRule)
Устанавливает правило заполнения для трассировочного пути заданным значением fillRule. Qt предоставляет два метода заполнения трассировочных путей:
| Qt::OddEvenFill (по умолчанию) | Qt::WindingFill |
|---|---|
См. также fillRule().
QPainterPath QPainterPath::simplified() const
Возвращает упрощённую версию этого пути. Это подразумевает объединение всех подпутей, которые пересекаются, и возвращает путь без пересекающихся отрезков. Последовательные параллельные линии также будут объединены. Упрощённый путь всегда использует правило заполнения по умолчанию, Qt::OddEvenFill. Кривые Безье могут быть упрощены до отрезков прямых из-за числовой нестабильности при пересечении кривых Безье.
Эта функция была добавлена в Qt 4.4.
qreal QPainterPath::slopeAtPercent(qreal t) const
Возвращает наклон пути в проценте t. Аргумент t должен быть между 0 и 1.
Обратите внимание, что, аналогично другим методам процентов, измерение процентов нелинейно относительно длины, если в пути присутствуют кривые. При наличии кривых аргумент процента отображается на параметр t уравнений Безье.
QPainterPath QPainterPath::subtracted(const QPainterPath &p) const
Возвращает путь, полученный вычитанием области заполнения p из области заполнения этого пути.
Операции над путями будут рассматривать пути как области. Незамкнутые пути будут рассматриваться как неявные замкнутые. Кривые Безье могут быть упрощены до отрезков прямых из-за числовой нестабильности при пересечении кривых Безье.
Эта функция была добавлена в Qt 4.3.
void QPainterPath::swap(QPainterPath &other)
Меняет местами трассировочный путь other с этим трассировочным путём. Эта операция очень быстрая и никогда не завершается ошибкой.
Эта функция была добавлена в Qt 4.8.
QPolygonF QPainterPath::toFillPolygon(const QTransform &matrix) const
Преобразует путь в многоугольник, используя матрицу преобразования QTransform matrix, и возвращает многоугольник.
Многоугольник создаётся путём преобразования всех подпутей в многоугольники, а затем использованием метода пересчёта, чтобы убедиться, что перекрывающиеся подпути могут быть заполнены с использованием правильного правила заполнения.
Обратите внимание, что пересчёт вставляет дополнительные линии в многоугольник, так что контур многоугольника заполнения не совпадает с контуром пути.
См. также toSubpathPolygons(), toFillPolygons(), и Преобразование QPainterPath.
QPolygonF QPainterPath::toFillPolygon(const QMatrix &matrix = QMatrix()) const
Это перегруженная функция.
QList<QPolygonF> QPainterPath::toFillPolygons(const QTransform &matrix) const
Преобразует путь в список многоугольников, используя матрицу преобразования QTransform matrix, и возвращает список.
Функция отличается от функции toFillPolygon() тем, что создаёт несколько многоугольников. Она предоставляется, потому что обычно быстрее рисовать несколько маленьких многоугольников, чем один большой, даже если общее количество нарисованных точек одинаковое.
Функция toFillPolygons() отличается от функции toSubpathPolygons() тем, что создаёт только один многоугольник для подпутей, имеющих перекрывающиеся ограничивающие прямоугольники.
Как и функция toFillPolygon(), эта функция использует метод пересчёта, чтобы убедиться, что перекрывающиеся подпути могут быть заполнены с использованием правильного правила заполнения. Обратите внимание, что пересчёт вставляет дополнительные линии в многоугольники, так что контур многоугольника заполнения не совпадает с контуром пути.
См. также toSubpathPolygons(), toFillPolygon(), и Преобразование QPainterPath.
QList<QPolygonF> QPainterPath::toFillPolygons(const QMatrix &matrix = QMatrix()) const
Это перегруженная функция.
QPainterPath QPainterPath::toReversed() const
Создаёт и возвращает обращённую копию пути.
Обращается порядок элементов: Если QPainterPath составлен вызовами функций moveTo(), lineTo() и cubicTo() в указанном порядке, обращённая копия составлена вызовами cubicTo(), lineTo() и moveTo().
QList<QPolygonF> QPainterPath::toSubpathPolygons(const QTransform &matrix) const
Преобразует путь в список многоугольников, используя матрицу преобразования QTransform matrix, и возвращает список.
Эта функция создаёт по одному многоугольнику для каждого подпути, независимо от пересекающихся подпутей (т. е. перекрывающихся ограничивающих прямоугольников). Чтобы убедиться, что такие перекрывающиеся подпути заполняются правильно, используйте функцию toFillPolygons() вместо этого.
См. также toFillPolygons(), toFillPolygon(), и Преобразование QPainterPath.
QList<QPolygonF> QPainterPath::toSubpathPolygons(const QMatrix &matrix = QMatrix()) const
Это перегруженная функция.
void QPainterPath::translate(qreal dx, qreal dy)
Перемещает все элементы пути на (dx, dy).
Эта функция была добавлена в Qt 4.6.
См. также translated().
void QPainterPath::translate(const QPointF &offset)
Это перегруженная функция.
Перемещает все элементы пути на заданное смещение offset.
Эта функция была добавлена в Qt 4.6.
См. также translated().
QPainterPath QPainterPath::translated(qreal dx, qreal dy) const
Возвращает копию пути, перемещённую на (dx, dy).
Эта функция была добавлена в Qt 4.6.
См. также translate().
QPainterPath QPainterPath::translated(const QPointF &offset) const
Это перегруженная функция.
Возвращает копию пути, перемещённую на заданное смещение offset.
Эта функция была добавлена в Qt 4.6.
См. также translate().
QPainterPath QPainterPath::united(const QPainterPath &p) const
Возвращает путь, являющийся объединением области заполнения этого пути и области заполнения p.
Операции над путями будут рассматривать пути как области. Незамкнутые пути будут рассматриваться как неявные замкнутые. Кривые Безье могут быть упрощены до отрезков прямых из-за числовой нестабильности при пересечении кривых Безье.
Эта функция была добавлена в Qt 4.3.
См. также intersected() и subtracted().
bool QPainterPath::operator!=(const QPainterPath &path) const
Возвращает true если этот трассировочный путь отличается от заданного пути path.
Обратите внимание, что сравнение путей может включать сравнение по элементу, что может быть медленным для сложных путей.
См. также operator==().
QPainterPath QPainterPath::operator&(const QPainterPath &other) const
Возвращает пересечение этого пути и пути other.
Эта функция была добавлена в Qt 4.5.
См. также intersected(), operator&=(), united(), и operator|().
END_OF_DOCUMENT_MARKERQPainterPath &QPainterPath::operator&=(const QPainterPath &other)
Пересекает этот путь с other и возвращает ссылку на этот путь.
Эта функция была добавлена в Qt 4.5.
См. также intersected(), operator&() и operator|=().
QPainterPath QPainterPath::operator+(const QPainterPath &other) const
Возвращает объединение этого пути и пути other. Эта функция эквивалентна operator|().
Эта функция была добавлена в Qt 4.5.
См. также united(), operator+=() и operator-().
QPainterPath &QPainterPath::operator+=(const QPainterPath &other)
Объединяет этот путь с other и возвращает ссылку на этот путь. Это эквивалентно operator|=().
Эта функция была добавлена в Qt 4.5.
См. также united(), operator+() и operator-=().
QPainterPath QPainterPath::operator-(const QPainterPath &other) const
Вычитает путь other из копии этого пути и возвращает копию.
Эта функция была добавлена в Qt 4.5.
См. также subtracted(), operator-=() и operator+().
QPainterPath &QPainterPath::operator-=(const QPainterPath &other)
Вычитает other из этого пути и возвращает ссылку на этот путь.
Эта функция была добавлена в Qt 4.5.
См. также subtracted(), operator-() и operator+=().
bool QPainterPath::operator==(const QPainterPath &path) const
Возвращает true , если этот painterpath равен заданному path.
Обратите внимание, что сравнение путей может включать сравнение по элементам, что может быть медленным для сложных путей.
См. также operator!=().
QPainterPath QPainterPath::operator|(const QPainterPath &other) const
Возвращает объединение этого пути и пути other.
Эта функция была добавлена в Qt 4.5.
См. также united(), operator|=(), intersected() и operator&().
QPainterPath &QPainterPath::operator|=(const QPainterPath &other)
Объединяет этот путь с other и возвращает ссылку на этот путь.
Эта функция была добавлена в Qt 4.5.
См. также united(), operator|() и operator&=().
Связанные нечлены
QDataStream &QPainterPath::operator<<(QDataStream &stream, const QPainterPath &path)
Записывает заданный painter path в заданный stream и возвращает ссылку на stream.
См. также Сериализация типов данных Qt.
QDataStream &QPainterPath::operator>>(QDataStream &stream, QPainterPath &path)
Считывает painter path из заданного stream в указанный path и возвращает ссылку на stream.
См. также Сериализация типов данных Qt.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/qpainterpath.html