Класс 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 = 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 | operator!=(const QPainterPath &path) const |
| QPainterPath | operator&(const QPainterPath &other) const |
| QPainterPath & | operator&=(const QPainterPath &other) |
| QPainterPath | operator+(const QPainterPath &other) const |
| QPainterPath & | operator+=(const QPainterPath &other) |
| QPainterPath | operator-(const QPainterPath &other) const |
| QPainterPath & | operator-=(const QPainterPath &other) |
| bool | operator==(const QPainterPath &path) const |
| QPainterPath | operator|(const QPainterPath &other) const |
| QPainterPath & | operator|=(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 предоставляет Пример использования путей отрисовки и Пример деформации векторов, которые находятся в каталоге примеров Qt.
Пример Пример использования путей отрисовки демонстрирует, как можно использовать пути отрисовки для создания сложных фигур для отрисовки и позволяет пользователю экспериментировать с заливкой и обводкой. Пример Пример деформации векторов показывает, как использовать QPainterPath для отрисовки текста.
| Пример использования путей отрисовки | Пример деформации векторов |
|---|---|
См. также QPainterPathStroker, QPainter, QRegion и Пример использования путей отрисовки.
Документация по типам членов
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 в этот путь как замкнутый подпуть.
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 в путь, добавив каждый прямоугольник в области как отдельный замкнутый подпуть.
END_OF_DOCUMENT_MARKERСм. также 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 = Qt::AbsoluteSize)
Это перегруженная функция.
Добавляет заданный прямоугольник 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
Возвращает элемент по указанному индексу в пути отрисовки.
См. также Тип элемента, elementCount() и isEmpty().
int QPainterPath::elementCount() const
Возвращает количество элементов пути в пути отрисовки.
См. также Тип элемента, 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 если какая-либо точка в заданном прямоугольнике пересекает путь; в противном случае возвращает 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.
void QPainterPath::setFillRule(Qt::FillRule fillRule)
Устанавливает правило заполнения пути отрисовки на заданное fillRule. Qt предоставляет два метода для заполнения путей:
| Qt::OddEvenFill (default) | 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 = 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).
Эта функция была добавлена в 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|().
QPainterPath &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-().
END_OF_DOCUMENT_MARKERQPainterPath &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 &operator<<(QDataStream &stream, const QPainterPath &path)
Записывает заданный painter path в заданный stream и возвращает ссылку на stream.
См. также Сериализация типов данных Qt.
QDataStream &operator>>(QDataStream &stream, QPainterPath &path)
Считывает путь painter из заданного stream в указанный path и возвращает ссылку на stream.
См. также Сериализация типов данных Qt.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.15/qpainterpath.html