Spec-Zone.ru › Qt 5.12

Класс QPainterPath

Класс QPainterPath предоставляет контейнер для операций рисования, позволяющий создавать и повторно использовать графические фигуры. Подробнее...

Заголовок: #include <QPainterPath>
qmake: QT += gui
  • Список всех членов, включая унаследованные
  • Устаревшие члены

Открытые типы

класс Элемент
перечисление ТипЭлемента { Перемещение, Линия, Кривая, ДанныеКривой }

Открытые функции

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 &center, 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 &region)
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
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 предоставляет Пример Painter Paths и Пример деформации векторов, которые находятся в каталоге примеров Qt.

Пример Painter Paths показывает, как можно использовать пути отрисовки для построения сложных фигур для отображения и позволяет пользователю экспериментировать с заполнением и обводкой. Пример Vector Deformation показывает, как использовать 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()

Создаёт объект 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 &center, 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 &region)

Добавляет заданную 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.

См. также moveTo() и arcTo().

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 вычтена из области заполнения этого пути.

Операции над путями будут рассматривать пути как области. Незамкнутые пути будут обрабатываться как неявные замкнутые. Кривые Безье могут быть сглажены до отрезков прямых из-за числовой неустойчивости при пересечении кривых Безье.

Эта функция была добавлена в Qt 4.3.

void QPainterPath::swap(QPainterPath &other)

Меняет местами объект painter path other и этот объект painter path. Эта операция очень быстрая и никогда не терпит неудачу.

Эта функция была добавлена в 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 если этот объект painter path отличается от заданного 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_MARKER

QPainterPath &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 если этот путь равен заданному 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)

Читает путь из заданного stream в указанный path и возвращает ссылку на stream.

См. также Сериализация типов данных Qt.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.12/qpainterpath.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API