Spec-Zone.ru › Qt 5.14

Класс QPainterPath

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

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

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

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

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

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 &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
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 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 обращённая() const
QList<QPolygonF> toSubpathPolygons(const QTransform &matrix) const
QList<QPolygonF> toSubpathPolygons(const QMatrix &matrix = QMatrix()) const
void сместить(qreal dx, qreal dy)
void сместить(const QPointF &offset)
QPainterPath смещённая(qreal dx, qreal dy) const
QPainterPath смещённая(const QPointF &offset) const
QPainterPath объединённая(const QPainterPath &p) const
bool 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 для рисования текста.

Пример использования путей отрисовки Пример деформации векторов
<img alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOUAAAEvCAMAAACNE/ZCAAADAFBMVEXu7u7s7Ozs7OskSJrh4+j09PTz8vLt7e3u7u79/f3d4OS0tbft7u/XuwTa2tr///+nqKrl0wLawAThzAPY297fygLKysrX2d3t7vTexwT19fXAwsXr6+vWuQXTtAXu7/GfoKDu4AGlpabm5ubv7/DcxATc3uPj4+MlSZvo2gJATWump6j39vvW2Nzk0APT1dlgit7RsgTo6u8pJyJSfdbr7fNAbcE7Z7wwWrPr7O7IyMjDysHYvgMxXLm4uLo+b8Wetdvw7ebx8veTk5Oftt2qlwg8bsPl5+zx8O/09Pm5wrYcHB3WsgVBTmyTvf/V2NvKqAV7ouuSu//Q0tR7o+0qKCO8vcCur7Fpamvt2gHLzs+ZmpxiY2RwcXKDg4WVmSrW19ZchMvUrwXfwAPHvAB3eHmgqofg4ODPrQX39vScpGp9fn/BrgCooglDaLWNk0GYkhiRm2Slro21vqujlgpNcryWnVXatwSIiYuMiRpUe8FcXF2ejAZFRUafnhft7eyYo3guU6DHoQSOj5CxqwbQpgZMTE3QxwC5oQFXV1inspk9V43EoADZzwCXm5CymQKvuKWKlFaHsfdTU1QtRnq1sQWXpL3RvgDR1tA6OjtLZ6VTZo5qeaEkIyOosMEnSIkRJEx7k8t3ehMAAACyvdTp5L7iz0hfVltmeDe4Vmy8NERxTYji02nAEyCdapNecTPtDAqOjIR9jmLlNzeWLE1obXr4hX5iZnTgAQX5W1Lv7+/+/v7v7+/////w7efZ29/39/fi5OnU1trf4eb29vbc3dzt7e3UtgXPrwbbwgRATWv5+PnizwJZfbnu7u7fxwOrq6vt7/VJdcXa3eDm1AJBTmxul+bn1gLr3QL6+fw2YbmVlZXQsAXNqgb9+vb8+PLz5gGxuZ+trRclSpvw8PAdHR6XnUXZvAQ0W6pGcc9HctGRjjDJpAe9xrufoy/57wCkrHtmjtK7uQaHlrF4iaxrktystZaChzUbM2bF0OkLCw3l2YXYvSzn3qKgIz95NGP38uEmAAABAHRSTlP+/v7+/v/+/v7+/v7+//7+/v7+/v7+//7+/v/+/v7+/v7+/v7+/v7+/v79/v7+/v7+/v79/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+//4D/v7+/v7+/v7+/v7+/v7+/v79/v7+/v7+/v7+/v7+/v7+/f7+/v7+/v7+/v7+/v7+/vz+/f7+/v7+/v7+/v3+/v7+/v7+/v5+/f7+qv6o/v7///////////////////////7//////////////////////////////////////v/////////////////+//////7////+ub3vjwAAIABJREFUeNrsVm9oW9cVf5JjPWLMNqOaVp4/NKvdeCFThKNIchpPTjCyEmODEpdMKcN7UDocGoU0vMDehwhBIB9EoARFLZIiWaAvSUhI6N8ZVjqSGpZICtM8G/TB7QI2z4YYPEmblA/Jzr3n3ieF2orctKHb/FPevb97zj2/e47u0XOEiYmJW48uDy/Ahw4LBMPDbCZGdFDOt6CRGtAyjBHD3Mr38uAFJsf1FzjTYp+WqtJhlgMuMbmq7DBbLTAPnrzAJAguP7o1MSFMTHwWzfxPI/oZVPlJ/uLo6GHyOTxKCMHhw2ymxsPESzlllDMHt7AAuh+N6OHBo0yO62sncdnRWilGUJ/lUHMIk73IMVql2uk13ov5T4RbwbGLyRu/SI55PJ6xGzCNAQhns4eMxOrBladqpIxaCBuIh+MDJQ83oocHI6gKI9xa1atKMYJSHjwKl5gUfSRZUZQMPLI0SyiFzM9n3gx4L44FhUfq2GzpyqdXSrOzszfoCGDTmqjxWWrtlmShEI6vzr4oyKsciiKVVkuA1ZIifcsrl8ZUYbc6a7FIV/54xWKJXZUsBKVZz6yVssEknUsliwbwISlZZitS1W4FuwzHCnHZ8oIgS5K0Sv8pORjJL1BaVaSnvMQvW2ZV4XLAYrVaI9dvXlOuxqwEy557R/4cthG6GsnBuFRJqVaG0tZdW1IyGjPu4JJVQzIcLhQC8VjO+mJA6kDINmU1OAmIrMr8dJ8khYKlYEiSfFZLAKpcXlpaWr72+fWPr1G27PT8brLQGazcDvdXilJvpZI50FqEcWAo5XOWOiej89HU7QH5wHRx6OctGaVSSfmWlpxLyUIRqswUVKLCsLwMi2UyUSwtM760zBlMuJMF1JLlGh22XEZFsoA6FPJRJF8eqowoSjC4KttYEHjlcqgMX4VvyQpV9vQTqNcfX1UpyzuShlTLW+Vi/LVQSyzmv2uIxo8evf3ysfDvdyQcypepSrwcCxuC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
<img alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOcAAAEwCAMAAAB7ZpYxAAADAFBMVEX+/v7////u7u7n5+f4+PgAAAD6+vru7u79/f3w8PD8/Pzv7+/19fXt7e3y8vLq6ur////BwcGOjo67u7sePIHg4OAEBAXf39/59/PNzc2/v7/s7Nbv788jLTzp6eHx8cjt7bkgISAuMC+2trWIsfm9vb0xXLQ7Zrufop/s7L4uOVEMDA0zXrvm5uqEhYXp6cCkpqTh4dPz88Ha79q4uLspKSxxcXEtOFBvldVtk9M5OTd2d3d3mdLk5O7G2sadnZ7T09UkJCZCQ0M9PjzY2OF4mtQ+bsSMmYvL3suDkIOgsaBahNpch9w9bcKysrP09LrJytXg4OptbW5OUE5RUTxUe8R5eUlmZkVCcshqamo8Yazq6s26vsmsrFt9ndZHcEzx8eZ7iqhndJY/WpIyS3z39+CcpsOovehNbKuoqHWPm7FYX4pLS1S2tpSIiF9mfLDYExcyczIsjyyeHzzMPklbWkyjqLOhn5mfnJj5+vzv7+8AAADx8fH////z8/P29vb7+/v4+Pj+/v7z8/Pz8/P9/f3t7e3+/v7p6en6+vru7u729vb8/Pzs7Ozs7Ozm5uYfPYK4uLe3t7bCwsLk5OTc3N3W19aJiYnExMTj4+Pr69zZ2dnKysrQ0NDb29uUlJSZmZrh4eGRkZHk5Mtul+RDbsD9/aTx8a7Hx8dLdtLf39js7Ozm5sjX7Nfo6MT396H7+53v77TT59PP5NDFxcerq6zj48+0tLWWlpf4+LPV6dX09Kn6+qszNDSnp6kYGBmvr6+ioqT397oTExRcXVypual+fn7c3OVYWVhUVVWAgYGcrZz8/L8aGiJpdGlteGzo6PBSU1JoaGhkZWVhYWF5f3jo6Nj7+8z+/rOtvq1CRDekpFb8/NuTopJvb0ZISEhMTEu5y7lJSTtYWD+2x7aDg0tiic0uVaNfX0CcnFPA08Dm5t6UlFCLi07Y5tPLy6Fgal+8vHfJyYLh9+F8kr3d3ZOPqOHs7J2Skm+STHVynutpuGrg4K1UjFNEXUTcb3buUvySAAAA8XRSTlP+/v7//v7+/f7+/v3+/v7+/f7+/v7//v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/wD+/v79/v7+/vz+/v78/v7+/v7+/v66aWRkBv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///////////////////////////v/////+IX+vKQAAIABJREFUeNrcVt1PWlsW3BVOMiHPbW2mvRhrgqkMYQH65VbE+hM4QUwjjcnsYTY8BEg8GCTNnfuHCExoo2VklaroKHOQdKTSHwtkZdLJTW2Y9KHqn/APME/QEz0pbP2Ph/iXJu5yX1wMr+92et7rb3O3sej7O+P/nb7/x6/PJI9+jkyPDxssQzzsIiCBQgweIgytolEdLXwQVKAOIdFFz6IjxNZoZ6YWcwgcU1uUgVLkxsuNnxhZxchVOZhj/ws+yXQdxI66QOE+v4AwuFw3xXiTHgsffwjqr3l1byydtYXkH2mz2pfv1renp2enr29HC4XJr8xNysa0WjI8vbKQNcwaJquocZqNNbWRPUZLbvNuVxTT5+6/Kcul8t5Yi+eWIpOZ7H4drJYdLqKRZczHD4BhevB1ITT5SyCyQmi03VSG0EeiHU5h0Mhny9Ku0AWJyYoJ+IwXC6J5QXshmJcvM0lcU1uTl4v5XMJqYUSvIPQUI2ja4FAIFKj8Rag64iFBsnFyW4bisVi7PHpKZDixMmg4UEgPFILT4Y/ToUnJ8JhrvhXv7cxeXKyEgufOE7AAD86bLfHGw06PIk0E0VHLRqNehqR4lWBoxFqtIGmg4FgsMYJ2lowGIyAZJDdrg8MDOifPI4N6IEZ8DZ8vk3bR3+wMeiNeSMf/a8MY52R9APb4KDXPzg1dhCqvIt6AyGb3+v3wpwao8ZecQ3DlCWr0VwikugR8n1Evstt4sB/82v2epBTQLqNB1wOQO0ARv1oPkcdNKegTrqUz/wJPbkMVBA6FYwdM2X8Xss0MVYbKxTP/DRHx7s9vlCo/5wzBsM+0MxbzRki3l9gzvg4Q2OdRp8Ud8U3NsYn+MK4KE9d+4EOa7OccFAIEh7kHKgztFBTzAAEurT4D49dQQePzUABuhopyHqi4V8gag/5A9GgwZDqOLr9EX9vkDI19kINmK+gM8fjQYbPn/A6+9sBBoBQ73u9/sDvoDhqqDnIh6Ph4vUDTTQCO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

См. также QPainterPathStroker, QPainter, QRegion и Пример Painter Paths.

Документация по типу элементов

enum QPainterPath::ElementType

Этот перечисление описывает типы элементов, используемых для соединения вершин в подпутях.

Обратите внимание, что элементы, добавленные как замкнутые подпути с помощью удобных функций addEllipse(), addPath(), addPolygon(), addRect(), addRegion() и addText(), фактически добавляются в путь как набор отдельных элементов с помощью функций moveTo(), lineTo() и cubicTo().

Константа Значение Описание
QPainterPath::MoveToElement 0 Новый подпуть. См. также moveTo().
QPainterPath::LineToElement 1 Линия. См. также lineTo().
QPainterPath::CurveToElement 2 Кривая. См. также cubicTo() и quadTo().
QPainterPath::CurveToDataElement 3 Дополнительные данные, необходимые для описания кривой в элементе CurveToElement.

См. также elementAt() и elementCount().

Документация по членам-функциям

QPainterPath::QPainterPath(const QPainterPath &path)

Создаёт объект QPainterPath, являющийся копией заданного path.

См. также operator=().

QPainterPath::QPainterPath(const QPointF &startPoint)

Создаёт объект QPainterPath с заданной startPoint в качестве текущей позиции.

QPainterPath::QPainterPath()

Конструирует пустой объект QPainterPath.

QPainterPath &QPainterPath::operator=(QPainterPath &&other)

Перемещающее присваивание other экземпляру QPainterPath.

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

QPainterPath &QPainterPath::operator=(const QPainterPath &path)

Присваивает заданный path этому объекту пути.

См. также QPainterPath().

QPainterPath::~QPainterPath()

Уничтожает этот объект QPainterPath.

void QPainterPath::addEllipse(const QRectF &boundingRectangle)

Создаёт эллипс внутри указанного boundingRectangle и добавляет его в путь рисования как замкнутый подпуть.

Эллипс состоит из кривой по часовой стрелке, начинающейся и заканчивающейся в нуле градусов (в 3 часа).

QLinearGradient myGradient;
QPen myPen;
QRectF boundingRectangle;

QPainterPath myPath;
myPath.addEllipse(boundingRectangle);

QPainter painter(this);
painter.setBrush(myGradient);
painter.setPen(myPen);
painter.drawPath(myPath);

См. также arcTo(), QPainter::drawEllipse() и Создание QPainterPath.

void QPainterPath::addEllipse(qreal x, qreal y, qreal width, qreal height)

Это перегруженная функция.

Создаёт эллипс в прямоугольнике, определяемом его верхним левым углом в координатах (x, y), шириной width и высотой height, и добавляет его в путь рисования как замкнутый подпуть.

void QPainterPath::addEllipse(const QPointF &center, qreal rx, qreal ry)

Это перегруженная функция.

Создаёт эллипс, расположенный в точке center с радиусами rx и ry, и добавляет его в путь рисования как замкнутый подпуть.

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

void QPainterPath::addPath(const QPainterPath &path)

Добавляет заданный path в this путь как замкнутый подпуть.

См. также connectPath() и Создание QPainterPath.

void QPainterPath::addPolygon(const QPolygonF &polygon)

Добавляет заданный polygon в путь как (незамкнутый) подпуть.

Обратите внимание, что текущая позиция после добавления многоугольника — это последняя точка в polygon. Чтобы нарисовать линию обратно к первой точке, используйте функцию closeSubpath().

END_OF_DOCUMENT_MARKER ```
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 добавляется как набор отрезков по часовой стрелке. Текущее положение пути после добавления прямоугольника будет в левом верхнем углу прямоугольника.

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 в путь, добавив каждый прямоугольник в 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().

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 (по умолчанию) Qt::WindingFill

См. также fillRule().

QPainterPath QPainterPath::simplified() const

Возвращает упрощённую версию этого пути. Это подразумевает объединение всех подпутей, которые пересекаются, и возвращение пути без пересекающихся отрезков. Последовательные параллельные линии также будут объединены. Упрощённый путь всегда использует стандартное правило заливки Qt::OddEvenFill. Кривые Безье могут быть упрощены до отрезков прямых линий из-за числовой неустойчивости при пересечении кривых Безье.

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

qreal QPainterPath::slopeAtPercent(qreal t) const

Возвращает наклон пути в процентах t. Аргумент t должен находиться в диапазоне от 0 до 1.

Обратите внимание, что, подобно другим методам процентов, измерение в процентах не является линейным по отношению к длине, если в пути присутствуют кривые. При наличии кривых аргумент процента отображается на параметр t уравнений Безье.

QPainterPath QPainterPath::subtracted(const QPainterPath &p) const

Возвращает путь, где область заливки p вычитается из области заливки этого пути.

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

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

void QPainterPath::swap(QPainterPath &other)

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

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

QPolygonF QPainterPath::toFillPolygon(const QTransform &matrix) const

Преобразует путь в многоугольник, используя матрицу преобразования QTransform matrix, и возвращает многоугольник.

Многоугольник создаётся путём преобразования всех подпутей в многоугольники, а затем с помощью техники перестановки, чтобы убедиться, что перекрывающиеся подпути могут быть заполнены с использованием правильного правила заливки.

Обратите внимание, что перестановка вставляет дополнительные линии в многоугольник, поэтому контур заполненного многоугольника не соответствует контуру пути.

См. также toSubpathPolygons(), toFillPolygons(), и Преобразование QPainterPath.

QPolygonF QPainterPath::toFillPolygon(const QMatrix &matrix = QMatrix()) const

Это перегруженная функция.

QList<QPolygonF> QPainterPath::toFillPolygons(const QTransform &matrix) const

Преобразует путь в список многоугольников, используя матрицу преобразования QTransform matrix, и возвращает список.

Функция отличается от функции toFillPolygon() тем, что создаёт несколько многоугольников. Она предоставляется, потому что обычно быстрее рисовать несколько маленьких многоугольников, чем один большой, даже если общее количество нарисованных точек одинаково.

Функция toFillPolygons() отличается от функции toSubpathPolygons() тем, что создаёт только многоугольник для подпутей, имеющих перекрывающиеся ограничивающие прямоугольники.

Как и функция toFillPolygon(), эта функция использует технику перестановки, чтобы убедиться, что перекрывающиеся подпути могут быть заполнены с использованием правильного правила заливки. Обратите внимание, что перестановка вставляет дополнительные линии в многоугольники, поэтому контур заполненного многоугольника не соответствует контуру пути.

См. также toSubpathPolygons(), toFillPolygon(), и Преобразование QPainterPath.

QList<QPolygonF> QPainterPath::toFillPolygons(const QMatrix &matrix = QMatrix()) const

Это перегруженная функция.

QPainterPath QPainterPath::toReversed() const

Создаёт и возвращает обращённую копию пути.

Обращается порядок элементов: Если QPainterPath составлен путём вызова функций moveTo(), lineTo() и cubicTo() в указанном порядке, то обращённая копия составляется путём вызова функций cubicTo(), lineTo() и moveTo().

QList<QPolygonF> QPainterPath::toSubpathPolygons(const QTransform &matrix) const

Преобразует путь в список многоугольников, используя матрицу преобразования QTransform matrix, и возвращает список.

Эта функция создаёт по одному многоугольнику для каждого подпути, независимо от пересекающихся подпутей (т. е. перекрывающихся ограничивающих прямоугольников). Чтобы убедиться, что такие перекрывающиеся подпути заполняются корректно, используйте функцию toFillPolygons() вместо неё.

См. также toFillPolygons(), toFillPolygon(), и Преобразование QPainterPath.

QList<QPolygonF> QPainterPath::toSubpathPolygons(const QMatrix &matrix = QMatrix()) const

Это перегруженная функция.

void QPainterPath::translate(qreal dx, qreal dy)

Перемещает все элементы пути на (dx, dy).

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

См. также translated().

void QPainterPath::translate(const QPointF &offset)

Это перегруженная функция.

Перемещает все элементы пути на заданное смещение offset.

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

См. также translated().

QPainterPath QPainterPath::translated(qreal dx, qreal dy) const

Возвращает копию пути, перемещённую на (dx, dy).

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

См. также translate().

QPainterPath QPainterPath::translated(const QPointF &offset) const

Это перегруженная функция.

Возвращает копию пути, перемещённую на заданное смещение offset.

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

См. также translate().

QPainterPath QPainterPath::united(const QPainterPath &p) const

Возвращает путь, который является объединением области заливки этого пути и области заливки p.

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

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

См. также intersected() и subtracted().

bool QPainterPath::operator!=(const QPainterPath &path) const

Возвращает true, если этот путь рисования отличается от заданного пути path.

Обратите внимание, что сравнение путей может включать сравнение по каждому элементу, что может быть медленным для сложных путей.

См. также operator==().

QPainterPath QPainterPath::operator&(const QPainterPath &other) const

Возвращает пересечение этого пути и пути other.

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

См. также intersected(), operator&=(), united(), и operator|().

QPainterPath &QPainterPath::operator&=(const QPainterPath &other)

Пересекает этот путь с other и возвращает ссылку на этот путь.

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

См. также intersected(), operator&(), и operator|=().

END_OF_DOCUMENT_MARKER

QPainterPath QPainterPath::operator+(const QPainterPath &other) const

Возвращает объединение текущей траектории и траектории other. Эта функция эквивалентна operator|().

Данная функция была добавлена в Qt 4.5.

См. также united(), operator+=(), и operator-().

QPainterPath &QPainterPath::operator+=(const QPainterPath &other)

Объединяет текущую траекторию с траекторией other и возвращает ссылку на текущую траекторию. Эквивалентно operator|=().

Данная функция была добавлена в Qt 4.5.

См. также united(), operator+(), и operator-=().

QPainterPath QPainterPath::operator-(const QPainterPath &other) const

Вычитает траекторию other из копии текущей траектории и возвращает копию.

Данная функция была добавлена в Qt 4.5.

См. также subtracted(), operator-=(), и operator+().

QPainterPath &QPainterPath::operator-=(const QPainterPath &other)

Вычитает other из текущей траектории и возвращает ссылку на текущую траекторию.

Данная функция была добавлена в Qt 4.5.

См. также subtracted(), operator-(), и operator+=().

bool QPainterPath::operator==(const QPainterPath &path) const

Возвращает true, если текущая траектория равна заданной траектории 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.14/qpainterpath.html

Spec-Zone.ru

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