Класс QPainterPath
Класс QPainterPath предоставляет контейнер для операций рисования, позволяя строить и повторно использовать графические фигуры. Подробнее...
| Заголовок: | #include <QPainterPath> |
| qmake: | QT += gui |
Открытые типы
| класс | Element |
| перечисление | ElementType { MoveToElement, LineToElement, CurveToElement, CurveToDataElement } |
Открытые функции
| QPainterPath() | |
| QPainterPath(const QPointF &startPoint) | |
| QPainterPath(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 |
| 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 | setElementPositionAt(int index, qreal x, qreal y) |
| void | setFillRule(Qt::FillRule fillRule) |
| QPainterPath | simplified() const |
| qreal | slopeAtPercent(qreal t) const |
| QPainterPath | subtracted(const QPainterPath &p) const |
| void | swap(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 | toReversed() const |
| QList<QPolygonF> | toSubpathPolygons(const QTransform &matrix) const |
| QList<QPolygonF> | toSubpathPolygons(const QMatrix &matrix = QMatrix()) const |
| void | translate(qreal dx, qreal dy) |
| void | translate(const QPointF &offset) |
| QPainterPath | translated(qreal dx, qreal dy) const |
| QPainterPath | translated(const QPointF &offset) const |
| QPainterPath | united(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) |
| QPainterPath & | operator=(const QPainterPath &path) |
| QPainterPath & | operator=(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 предоставляет контейнер для операций рисования, позволяющий создавать и повторно использовать графические фигуры.
Путь рисования — это объект, состоящий из ряда графических строительных блоков, таких как прямоугольники, эллипсы, линии и кривые. Строительные блоки могут быть соединены в замкнутые подпути, например, в виде прямоугольника или эллипса. Замкнутый путь имеет совпадающие начальную и конечную точки. Или они могут существовать независимо как незамкнутые подпути, такие как линии и кривые.
Объект QPainterPath может использоваться для заполнения, обводки и обрезки. Для генерации заполняемых контуров для заданного пути рисования используйте класс QPainterPathStroker. Главное преимущество путей рисования по сравнению с обычными операциями рисования заключается в том, что сложные фигуры нужно создавать только один раз; затем их можно рисовать много раз, используя только вызовы функции QPainter::drawPath().
QPainterPath предоставляет набор функций, которые могут использоваться для получения информации о пути и его элементах. Кроме того, можно изменить порядок элементов, используя функцию toReversed(). Также есть несколько функций для преобразования этого объекта пути рисования в полигональное представление.
Составление QPainterPath
Объект QPainterPath может быть создан как пустой путь, с заданной начальной точкой или как копия другого объекта QPainterPath. После создания к пути можно добавлять линии и кривые с помощью функций lineTo(), arcTo(), cubicTo() и quadTo(). Линии и кривые тянутся от currentPosition() до позиции, переданной в качестве аргумента.
currentPosition() объекта QPainterPath всегда является конечной позицией последнего добавленного подпути (или начальной точкой).
Используйте функцию moveTo(), чтобы переместить currentPosition(), не добавляя компонент. Функция moveTo() неявным образом начинает новый подпуть и закрывает предыдущий. Другой способ начать новый подпуть — вызвать функцию closeSubpath(), которая закрывает текущий путь, добавив линию от currentPosition() обратно к начальной позиции пути. Обратите внимание, что новый путь будет иметь (0, 0) в качестве начальной currentPosition().
Класс 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.
Пример Painter Paths Example демонстрирует, как использовать пути отрисовки для создания сложных форм для отрисовки, а также позволяет пользователю экспериментировать с заполнением и обводкой. Пример Vector Deformation Example показывает, как использовать QPainterPath для отрисовки текста.
| Painter Paths Example | Vector Deformation Example |
|---|---|
См. также 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()
Создаёт пустой объект QPainterPath.
QPainterPath::QPainterPath(const QPointF &startPoint)
Создаёт объект QPainterPath с заданной точкой начала startPoint в качестве текущей позиции.
QPainterPath::QPainterPath(const QPainterPath &path)
Создаёт объект QPainterPath, являющийся копией заданного пути path.
См. также operator=().
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.
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.
Эта функция была добавлена в 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().
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::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 (по умолчанию) | 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 вычтена из области заполнения этого пути.
END_OF_DOCUMENT_MARKER ```Операции над путями будут рассматривать пути как области. Незамкнутые пути будут рассматриваться как неявно замкнутые. Кривые Безье могут быть сглажены до отрезков прямых из-за числовой нестабильности при пересечении кривых Безье.
Данная функция была введена в 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|().
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-().
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+().
END_OF_DOCUMENT_MARKERQPainterPath &QPainterPath::operator-=(const QPainterPath &other)
Вычитает other из этого пути и возвращает ссылку на этот путь.
Эта функция была добавлена в Qt 4.5.
См. также subtracted(), operator-() и operator+=().
QPainterPath &QPainterPath::operator=(const QPainterPath &path)
Присваивает заданный path этому пути.
См. также QPainterPath().
QPainterPath &QPainterPath::operator=(QPainterPath &&other)
Перемещающее присваивание other данному экземпляру QPainterPath.
Эта функция была добавлена в Qt 5.2.
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)
Записывает заданный путь 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/archives/qt-5.6/qpainterpath.html