Класс QPolygon
Класс QPolygon предоставляет вектор точек с целочисленной точностью. Подробнее...
| Заголовок: | #include <QPolygon> |
| qmake: | QT += gui |
| Наследует: | QVector |
Примечание: Все функции в этом классе являются реентерабельными.
Открытые функции
| QPolygon(const QPolygon &polygon) | |
| QPolygon(const QRect &rectangle, bool closed = false) | |
| QPolygon(const QVector<QPoint> &points) | |
| QPolygon(int size) | |
| QPolygon() | |
| ~QPolygon() | |
| QRect | boundingRect() const |
| bool | containsPoint(const QPoint &point, Qt::FillRule fillRule) const |
| QPolygon | intersected(const QPolygon &r) const |
| bool | intersects(const QPolygon &p) const |
| void | point(int index, int *x, int *y) const |
| QPoint | point(int index) const |
| void | putPoints(int index, int nPoints, const QPolygon &fromPolygon, int fromIndex = 0) |
| void | putPoints(int index, int nPoints, int firstx, int firsty, ...) |
| void | setPoint(int index, int x, int y) |
| void | setPoint(int index, const QPoint &point) |
| void | setPoints(int nPoints, const int *points) |
| void | setPoints(int nPoints, int firstx, int firsty, ...) |
| QPolygon | subtracted(const QPolygon &r) const |
| void | swap(QPolygon &other) |
| void | translate(int dx, int dy) |
| void | translate(const QPoint &offset) |
| QPolygon | translated(int dx, int dy) const |
| QPolygon | translated(const QPoint &offset) const |
| QPolygon | united(const QPolygon &r) const |
| QVariant | operator QVariant() const |
Связанные нечлены
| QDataStream & | operator<<(QDataStream &stream, const QPolygon &polygon) |
| QDataStream & | operator>>(QDataStream &stream, QPolygon &polygon) |
Подробное описание
Объект QPolygon — это QVector<QPoint>. Самый простой способ добавить точки в QPolygon — использовать оператор потокового ввода/вывода QVector, как показано ниже:
QPolygon polygon;
polygon << QPoint(10, 20) << QPoint(20, 30); В дополнение к функциям, предоставляемым QVector, QPolygon предоставляет некоторые функции, специфичные для точек.
Каждую точку в многоугольнике можно получить, передав её индекс функции point(). Для заполнения многоугольника QPolygon предоставляет функцию setPoint() для установки точки в заданном индексе, функцию setPoints() для установки всех точек в многоугольнике (изменяя его размер до заданного числа точек) и функцию putPoints(), которая копирует заданное количество точек в многоугольник с указанного индекса (при необходимости изменяя размер многоугольника).
QPolygon предоставляет функции boundingRect() и translate() для геометрических функций. Для более общих преобразований многоугольников QPolygon используйте функцию QMatrix::map().
Класс QPolygon использует явное совместное использование.
См. также QVector, QPolygonF и QLine.
Документация по функциям-членам
QPolygon::QPolygon(const QPolygon &polygon)
Создает копию данного многоугольника.
См. также setPoints().
QPolygon::QPolygon(const QRect &rectangle, bool closed = false)
Создаёт многоугольник из заданного прямоугольника. Если closed равно false, многоугольник содержит только четыре точки прямоугольника, упорядоченные по часовой стрелке, в противном случае пятая точка многоугольника устанавливается в rectangle.topLeft().
Обратите внимание, что нижняя правая вершина прямоугольника находится в координатах (rectangle.x() + rectangle.width(), rectangle.y() + rectangle.height()).
См. также setPoints().
QPolygon::QPolygon(const QVector<QPoint> &points)
Создаёт многоугольник, содержащий указанные points.
См. также setPoints().
QPolygon::QPolygon(int size)
Создаёт многоугольник заданного размера size. Создаёт пустой многоугольник, если size == 0.
См. также QVector::isEmpty().
QPolygon::QPolygon()
Создаёт многоугольник без точек.
См. также QVector::isEmpty().
QPolygon::~QPolygon()
Уничтожает многоугольник.
QRect QPolygon::boundingRect() const
Возвращает прямоугольник, охватывающий многоугольник, или QRect(0, 0, 0, 0), если многоугольник пустой.
См. также QVector::isEmpty().
bool QPolygon::containsPoint(const QPoint &point, Qt::FillRule fillRule) const
Возвращает true , если заданная point находится внутри многоугольника в соответствии с заданным fillRule; в противном случае возвращает false.
Эта функция была введена в Qt 4.3.
QPolygon QPolygon::intersected(const QPolygon &r) const
Возвращает многоугольник, являющийся пересечением этого многоугольника и r.
Операции над множествами для многоугольников будут обрабатывать многоугольники как области. Незамкнутые многоугольники будут обрабатываться как неявные замкнутые.
Эта функция была введена в Qt 4.3.
См. также intersects().
bool QPolygon::intersects(const QPolygon &p) const
Возвращает true если текущий многоугольник пересекается с заданным многоугольником p в любой точке. Также возвращает true если текущий многоугольник содержит или содержится в любой части p.
Операции над множествами многоугольников будут рассматривать многоугольники как области. Незамкнутые многоугольники будут рассматриваться как неявно замкнутые.
Эта функция была представлена в Qt 5.10.
См. также intersected().
void QPolygon::point(int index, int *x, int *y) const
Извлекает координаты точки по заданному index в *x и *y (если указатели валидны).
См. также setPoint().
QPoint QPolygon::point(int index) const
Это перегруженная функция.
Возвращает точку по заданному index.
void QPolygon::putPoints(int index, int nPoints, const QPolygon &fromPolygon, int fromIndex = 0)
Это перегруженная функция.
Копирует nPoints точек из заданного fromIndex (по умолчанию 0) в fromPolygon в этот многоугольник, начиная с указанного index. Например:
QPolygon polygon1;
polygon1.putPoints(0, 3, 1,2, 0,0, 5,6);
// polygon1 is now the three-point polygon(1,2, 0,0, 5,6);
QPolygon polygon2;
polygon2.putPoints(0, 3, 4,4, 5,5, 6,6);
// polygon2 is now (4,4, 5,5, 6,6);
polygon1.putPoints(2, 3, polygon2);
// polygon1 is now the five-point polygon(1,2, 0,0, 4,4, 5,5, 6,6); void QPolygon::putPoints(int index, int nPoints, int firstx, int firsty, ...)
Копирует nPoints точек из списка переменных аргументов в этот многоугольник, начиная с заданного index.
Точки задаются последовательностью целых чисел, начиная с firstx, затем firsty и так далее. Многоугольник изменяет размер, если index+nPoints превышает его текущий размер.
Пример кода создает многоугольник с тремя точками (4,5), (6,7) и (8,9), расширяя многоугольник с 1 до 3 точек:
QPolygon polygon(1);
polygon[0] = QPoint(4, 5);
polygon.putPoints(1, 2, 6,7, 8,9); Следующий код имеет тот же результат, но здесь функция putPoints() перезаписывает, а не расширяет:
QPolygon polygon(3);
polygon.putPoints(0, 3, 4,5, 0,0, 8,9);
polygon.putPoints(1, 1, 6,7); См. также setPoints().
void QPolygon::setPoint(int index, int x, int y)
Устанавливает точку по заданному index на точку, заданную (x, y).
См. также point(), putPoints() и setPoints().
void QPolygon::setPoint(int index, const QPoint &point)
Это перегруженная функция.
Устанавливает точку по заданному index на заданную point.
void QPolygon::setPoints(int nPoints, const int *points)
Изменяет размер многоугольника на nPoints и заполняет его заданными points.
Пример кода создает многоугольник с двумя точками (10, 20) и (30, 40):
static const int points[] = { 10, 20, 30, 40 };
QPolygon polygon;
polygon.setPoints(2, points); См. также setPoint() и putPoints().
void QPolygon::setPoints(int nPoints, int firstx, int firsty, ...)
Это перегруженная функция.
Изменяет размер многоугольника на nPoints и заполняет его точками, заданными списком переменных аргументов. Точки задаются последовательностью целых чисел, начиная с firstx, затем firsty и так далее.
Пример кода создает многоугольник с двумя точками (10, 20) и (30, 40):
QPolygon polygon;
polygon.setPoints(2, 10, 20, 30, 40); QPolygon QPolygon::subtracted(const QPolygon &r) const
Возвращает многоугольник, из которого вычтен многоугольник r.
Операции над множествами многоугольников будут рассматривать многоугольники как области. Незамкнутые многоугольники будут рассматриваться как неявно замкнутые.
Эта функция была представлена в Qt 4.3.
void QPolygon::swap(QPolygon &other)
Меняет местами многоугольник other с этим многоугольником. Эта операция очень быстрая и никогда не терпит неудачу.
Эта функция была представлена в Qt 4.8.
void QPolygon::translate(int dx, int dy)
Переводит все точки многоугольника на (dx, dy).
См. также translated().
void QPolygon::translate(const QPoint &offset)
Это перегруженная функция.
Переводит все точки многоугольника на заданный offset.
См. также translated().
QPolygon QPolygon::translated(int dx, int dy) const
Возвращает копию многоугольника, сдвинутого на (dx, dy).
Эта функция была представлена в Qt 4.6.
См. также translate().
QPolygon QPolygon::translated(const QPoint &offset) const
Это перегруженная функция.
Возвращает копию многоугольника, сдвинутого на заданный offset.
Эта функция была представлена в Qt 4.6.
См. также translate().
QPolygon QPolygon::united(const QPolygon &r) const
Возвращает многоугольник, являющийся объединением этого многоугольника и r.
Операции над множествами многоугольников будут рассматривать многоугольники как области и неявно закроют многоугольник.
Эта функция была представлена в Qt 4.3.
См. также intersected() и subtracted().
QVariant QPolygon::operator QVariant() const
Возвращает многоугольник как QVariant
Связанные нечлены
QDataStream &QPolygon::operator<<(QDataStream &stream, const QPolygon &polygon)
Записывает заданный polygon в заданный stream и возвращает ссылку на поток.
Эта функция была представлена в Qt 4.4.
См. также Сериализация типов данных Qt.
QDataStream &QPolygon::operator>>(QDataStream &stream, QPolygon &polygon)
Считывает многоугольник из заданного stream в заданный polygon и возвращает ссылку на поток.
Эта функция была представлена в Qt 4.4.
См. также Сериализация типов данных Qt.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/qpolygon.html