Класс QRegion
Класс QRegion задаёт область обрезки для художника. Подробнее...
| Заголовок: | #include <QRegion> |
| qmake: | QT += gui |
Типы
| Перечисление | RegionType { Прямоугольник, Эллипс } |
Общедоступные функции
| QRegion() | |
| QRegion(int x, int y, int w, int h, RegionType t = Прямоугольник) | |
| QRegion(const QRect &r, RegionType t = Прямоугольник) | |
| QRegion(const QPolygon &a, Qt::FillRule fillRule = Qt::OddEvenFill) | |
| QRegion(const QRegion &r) | |
| QRegion(const QBitmap &bm) | |
| QRect | boundingRect() const |
| bool | contains(const QPoint &p) const |
| bool | contains(const QRect &r) const |
| QRegion | intersected(const QRegion &r) const |
| QRegion | intersected(const QRect &rect) const |
| bool | intersects(const QRegion ®ion) const |
| bool | intersects(const QRect &rect) const |
| bool | isEmpty() const |
| bool | isNull() const |
| int | rectCount() const |
| QVector<QRect> | rects() const |
Связанные нечлены
| QDataStream & | operator<<(QDataStream &s, const QRegion &r) |
| QDataStream & | operator>>(QDataStream &s, QRegion &r) |
Подробное описание
Класс QRegion задаёт область обрезки для художника.
QRegion используется с QPainter::setClipRegion(), чтобы ограничить область рисования тем, что нужно нарисовать. Также есть функция QWidget::repaint(), которая принимает параметр QRegion. QRegion — лучший инструмент для минимизации обновляемой области экрана при перерисовке.
Этот класс не подходит для построения фигур для рендеринга, особенно контуров. Используйте QPainterPath для создания путей и фигур для использования с QPainter.
QRegion — класс с неявным совместным использованием.
Создание и использование областей
Область может быть создана из прямоугольника, эллипса, многоугольника или растрового изображения. Сложные области могут быть созданы путём комбинирования простых областей с помощью united(), intersected(), subtracted() или xored() (исключающее ИЛИ). Вы можете перемещать область с помощью translate().
END_OF_DOCUMENT_MARKERМожно проверить, пуста ли область isEmpty() или содержит ли она QPoint или QRect с помощью метода contains(). Границу ограничивающего прямоугольника можно найти с помощью метода boundingRect().
Функция rects() возвращает разложение области на прямоугольники.
Пример использования сложных областей:
void MyWidget::paintEvent(QPaintEvent *)
{
QRegion r1(QRect(100, 100, 200, 80), // r1: elliptic region
QRegion::Ellipse);
QRegion r2(QRect(100, 120, 90, 30)); // r2: rectangular region
QRegion r3 = r1.intersected(r2); // r3: intersection
QPainter painter(this);
painter.setClipRegion(r3);
... // paint clipped graphics
} Дополнительная информация о лицензиях
На платформах Embedded Linux, Windows CE и X11 части этого класса основаны на коде, полученном по следующим лицензиям:
Copyright (c) 1987 X Consortium
Разрешается бесплатное использование, копирование, модификация, слияние, публикация, распространение, суб-лицензирование и/или продажа копий данного программного обеспечения и связанной с ним документации (далее «Программное обеспечение») любому лицу, получившему копию данного Программного обеспечения и связанной с ним документации, без каких-либо ограничений, включая, но не ограничиваясь, правами на использование, копирование, модификацию, слияние, публикацию, распространение, суб-лицензирование и/или продажу копий Программного обеспечения, а также предоставление права на выполнение данных действий лицам, которым было предоставлено Программное обеспечение, при соблюдении следующих условий:
Вышеупомянутый знак авторских прав и настоящее разрешение должны быть включены во все копии или существенные части Программного обеспечения.
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ» БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ГАРАНТИЯМИ ТОВАРНОЙ ПРИГОДНОСТИ, ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ И ОТСУТСТВИЯ НАРУШЕНИЙ ПРАВ. В НИКАКИХ СЛУЧАЯХ X CONSORTIUM НЕ НЕСЕТ ОТВЕТСТВЕННОСТИ ЗА ПРЕТЕНЗИИ, УБЫТКИ ИЛИ ДРУГУЮ ОТВЕТСТВЕННОСТЬ, ВОЗНИКШИЕ В РЕЗУЛЬТАТЕ ДЕЙСТВИЙ ПО КОНТРАКТУ, ДЕЛИКТА ИЛИ ИНАЧЕ, ВОЗНИКШИЕ В СВЯЗИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ИЛИ ДРУГИМИ ДЕЙСТВИЯМИ В ОТНОШЕНИИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ.
За исключением случаев, указанных в настоящем уведомлении, имя X Consortium не должно использоваться в рекламе или иным образом для продвижения продажи, использования или других действий в отношении данного Программного обеспечения без предварительного письменного разрешения X Consortium.
Copyright 1987 Digital Equipment Corporation, Maynard, Massachusetts.
Все права защищены
Разрешается использовать, копировать, изменять и распространять данное программное обеспечение и его документацию для любых целей и безвозмездно при условии, что знак авторских прав будет указан во всех копиях, а также что данный знак авторских прав и настоящее разрешение будут указаны в сопроводительной документации, и что имя Digital не будет использоваться в рекламе или публичности, связанной с распространением программного обеспечения без специального письменного предварительного разрешения.
DIGITAL НЕ ДАЁТ НИКАКИХ ГАРАНТИЙ В ОТНОШЕНИИ ЭТОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ, ВКЛЮЧАЯ ВСЕ ПОДРАЗУМЕВАЕМЫЕ ГАРАНТИИ КОММЕРЧЕСКОЙ СТОРОНЫ И ПРИГОДНОСТИ, В НИКАКИХ СЛУЧАЯХ DIGITAL НЕ НЕСЁТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ СПЕЦИАЛЬНЫЕ, КОСВЕННЫЕ ИЛИ ПОСЛЕДОВАТЕЛЬНЫЕ УБЫТКИ, ИЛИ ЛЮБЫЕ УБЫТКИ, ВОЗНИКШИЕ В РЕЗУЛЬТАТЕ ПОТЕРИ ИСПОЛЬЗОВАНИЯ, ДАННЫХ ИЛИ ПРИБЫЛИ, ЛИБО ПРИ ДЕЙСТВИИ ПО КОНТРАКТУ, НЕБРЕЖНОСТИ ИЛИ ДРУГИМ ДЕЛИКТАМ, ВОЗНИКШИМ В СВЯЗИ С ИСПОЛЬЗОВАНИЕМ ИЛИ ВЫПОЛНЕНИЕМ ЭТОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ.
См. также QPainter::setClipRegion(), QPainter::setClipRect() и QPainterPath.
Документация по типам членов
перечисление QRegion::RegionType
Указывает форму создаваемой области.
| Константа | Значение | Описание |
|---|---|---|
QRegion::Rectangle |
0 |
область охватывает весь прямоугольник. |
QRegion::Ellipse |
1 |
область представляет собой эллипс внутри прямоугольника. |
Документация по функциям-членам
QRegion::QRegion()
Конструирует пустую область.
См. также isEmpty().
QRegion::QRegion(int x, int y, int w, int h, RegionType t = Rectangle)
Конструирует прямоугольную или эллиптическую область.
Если t равно Rectangle, область — это заполненный прямоугольник (x, y, w, h). Если t равно Ellipse, область — это заполненный эллипс с центром в (x + w / 2, y + h / 2) и размером (w ,h).
QRegion::QRegion(const QRect &r, RegionType t = Rectangle)
Это перегруженная функция.
Создаёт область, основанную на прямоугольнике r с типом области t.
Если прямоугольник недопустим, будет создана пустая область.
См. также QRegion::RegionType.
QRegion::QRegion(const QPolygon &a, Qt::FillRule fillRule = Qt::OddEvenFill)
Конструирует область многоугольника из массива точек a с правилом заполнения, указанным в fillRule.
Если fillRule — Qt::WindingFill, область многоугольника определяется с помощью алгоритма обхода; если это Qt::OddEvenFill, используется алгоритм заполнения нечёт-чёт.
Предупреждение: этот конструктор может создавать сложные области, что замедлит рисование при использовании.
QRegion::QRegion(const QRegion &r)
Создаёт новую область, равную области r.
QRegion::QRegion(const QBitmap &bm)
Создаёт область из битовой карты bm.
Результат области состоит из пикселей в битовой карте bm, которые имеют значение Qt::color1, как если бы каждый пиксель был прямоугольником размером 1x1.
Этот конструктор может создавать сложные области, что замедлит рисование при использовании. Обратите внимание, что отрисовку масок пиксельных изображений можно выполнить гораздо быстрее с помощью QPixmap::setMask().
QRect QRegion::boundingRect() const
Возвращает ограничивающий прямоугольник этой области. Пустая область возвращает прямоугольник, который QRect::isNull().
bool QRegion::contains(const QPoint &p) const
Возвращает true если область содержит точку p, в противном случае возвращает false.
bool QRegion::contains(const QRect &r) const
Это перегруженная функция.
Возвращает true если область перекрывается прямоугольником r, в противном случае возвращает false.
QRegion QRegion::intersected(const QRegion &r) const
Возвращает область, являющуюся пересечением этой области и области r.
На рисунке показано пересечение двух эллиптических областей.
Эта функция была добавлена в Qt 4.2.
См. также subtracted(), united() и xored().
QRegion QRegion::intersected(const QRect &rect) const
Возвращает область, являющуюся пересечением этой области и заданного прямоугольника rect.
Эта функция была добавлена в Qt 4.4.
См. также subtracted(), united() и xored().
bool QRegion::intersects(const QRegion ®ion) const
Возвращает true если эта область пересекается с областью region, иначе возвращает false.
Эта функция была добавлена в Qt 4.2.
bool QRegion::intersects(const QRect &rect) const
Возвращает true если эта область пересекается с rect, в противном случае возвращает false.
Эта функция была добавлена в Qt 4.2.
bool QRegion::isEmpty() const
Возвращает true если область пуста; в противном случае возвращает false. Пустая область — это область, не содержащая точек.
Пример:
QRegion r1(10, 10, 20, 20); r1.isEmpty(); // false QRegion r3; r3.isEmpty(); // true QRegion r2(40, 40, 20, 20); r3 = r1.intersected(r2); // r3: intersection of r1 and r2 r3.isEmpty(); // true r3 = r1.united(r2); // r3: union of r1 and r2 r3.isEmpty(); // false
bool QRegion::isNull() const
Возвращает true если область пуста; в противном случае возвращает false. Пустая область — это область, не содержащая точек. Эта функция эквивалентна isEmpty.
Эта функция была добавлена в Qt 5.0.
См. также isEmpty().
int QRegion::rectCount() const
Возвращает количество прямоугольников, которые будут возвращены функцией rects().
Эта функция была добавлена в Qt 4.6.
QVector<QRect> QRegion::rects() const
Возвращает массив неперекрывающихся прямоугольников, составляющих область.
Объединение всех прямоугольников равно исходной области.
См. также setRects().
void QRegion::setRects(const QRect *rects, int number)
Устанавливает область, используя массив прямоугольников, указанных в rects и number. Прямоугольники обязательно должны быть отсортированы по оси Y и следовать этим ограничениям:
- Прямоугольники не должны пересекаться.
- Все прямоугольники с заданной верхней координатой должны иметь одинаковую высоту.
- Два прямоугольника не могут соприкасаться по горизонтали (в этом случае они должны быть объединены в один более широкий прямоугольник).
- Прямоугольники должны быть отсортированы по возрастанию, с Y в качестве основного ключа сортировки и X в качестве дополнительного.
См. также rects().
QRegion QRegion::subtracted(const QRegion &r) const
Возвращает область, из которой вычтена область r из этой области.
На рисунке показан результат вычитания эллипса справа из эллипса слева (left - right).
Эта функция была добавлена в Qt 4.2.
См. также intersected(), united() и xored().
void QRegion::swap(QRegion &other)
Меняет местами область other и эту область. Эта операция очень быстрая и никогда не терпит неудачу.
Эта функция была добавлена в Qt 4.8.
void QRegion::translate(int dx, int dy)
Перемещает (сдвигает) область на dx по оси X и dy по оси Y.
void QRegion::translate(const QPoint &point)
Это перегруженная функция.
Перемещает область на point.x() по оси X и point.y() по оси Y, относительно текущего положения. Положительные значения перемещают область вправо и вниз.
Перемещает область в указанную точку point.
QRegion QRegion::translated(int dx, int dy) const
Возвращает копию области, перемещённой на dx по оси X и dy по оси Y, относительно текущего положения. Положительные значения перемещают область вправо и вниз.
Эта функция была добавлена в Qt 4.1.
См. также translate().
QRegion QRegion::translated(const QPoint &p) const
Это перегруженная функция.
Возвращает копию области, перемещённой на p.x() по оси X и p.y() по оси Y, относительно текущего положения. Положительные значения перемещают область вправо и вниз.
Эта функция была добавлена в Qt 4.1.
См. также translate().
QRegion QRegion::united(const QRegion &r) const
Возвращает область, являющуюся объединением этой области и области r.
На рисунке показано объединение двух эллиптических областей.
Эта функция была добавлена в Qt 4.2.
См. также intersected(), subtracted() и xored().
QRegion QRegion::united(const QRect &rect) const
Возвращает область, являющуюся объединением этой области и заданного прямоугольника rect.
Эта функция была добавлена в Qt 4.4.
См. также intersected(), subtracted() и xored().
QRegion QRegion::xored(const QRegion &r) const
Возвращает область, являющуюся исключающим или (XOR) этой области и области r.
На рисунке показано исключающее или двух эллиптических областей.
Эта функция была добавлена в Qt 4.2.
См. также intersected(), united() и subtracted().
QRegion::operator QVariant() const
Возвращает область в виде QVariant
bool QRegion::operator!=(const QRegion &other) const
Возвращает true если эта область отличается от области other; в противном случае возвращает false.
QRegion QRegion::operator&(const QRegion &r) const
Применяет функцию intersected() к этой области и r. r1&r2 эквивалентно r1.intersected(r2).
См. также intersected().
QRegion QRegion::operator&(const QRect &r) const
Это перегруженная функция.
Эта функция была добавлена в Qt 4.4.
QRegion &QRegion::operator&=(const QRegion &r)
Применяет функцию intersected() к этой области и r и присваивает результат этой области. r1&=r2 эквивалентно r1 = r1.intersected(r2).
См. также intersected().
QRegion &QRegion::operator&=(const QRect &r)
Это перегруженная функция.
Эта функция была добавлена в Qt 4.4.
QRegion QRegion::operator+(const QRegion &r) const
Применяет функцию united() к этой области и r. r1+r2 эквивалентно r1.united(r2).
См. также united() и operator|().
QRegion QRegion::operator+(const QRect &r) const
Это перегруженная функция.
Эта функция была добавлена в Qt 4.4.
QRegion &QRegion::operator+=(const QRegion &r)
Применяет функцию united() к этой области и r и присваивает результат этой области. r1+=r2 эквивалентно r1 = r1.united(r2).
См. также intersected().
QRegion &QRegion::operator+=(const QRect &rect)
Возвращает область, являющуюся объединением этой области и указанного прямоугольника rect.
См. также united().
QRegion QRegion::operator-(const QRegion &r) const
Применяет функцию subtracted() к этой области и r. r1-r2 эквивалентно r1.subtracted(r2).
См. также subtracted().
QRegion &QRegion::operator-=(const QRegion &r)
Применяет функцию subtracted() к этой области и r и присваивает результат этой области. r1-=r2 эквивалентно r1 = r1.subtracted(r2).
См. также subtracted().
QRegion &QRegion::operator=(const QRegion &r)
Присваивает r этой области и возвращает ссылку на область.
QRegion &QRegion::operator=(QRegion &&other)
Присваивает other этому экземпляру QRegion.
Эта функция была добавлена в Qt 5.2.
bool QRegion::operator==(const QRegion &r) const
Возвращает true если области равны; в противном случае возвращает false.
QRegion QRegion::operator^(const QRegion &r) const
Применяет функцию xored() к этому региону и r. r1^r2 эквивалентно r1.xored(r2).
См. также xored().
QRegion &QRegion::operator^=(const QRegion &r)
Применяет функцию xored() к этому региону и r и присваивает результат этому региону. r1^=r2 эквивалентно r1 = r1.xored(r2).
См. также xored().
QRegion QRegion::operator|(const QRegion &r) const
Применяет функцию united() к этому региону и r. r1|r2 эквивалентно r1.united(r2).
См. также united() и operator+().
QRegion &QRegion::operator|=(const QRegion &r)
Применяет функцию united() к этому региону и r и присваивает результат этому региону. r1|=r2 эквивалентно r1 = r1.united(r2).
См. также united().
Связанные нечлены
QDataStream &operator<<(QDataStream &s, const QRegion &r)
Записывает регион r в поток s и возвращает ссылку на поток.
См. также Формат операторов QDataStream.
QDataStream &operator>>(QDataStream &s, QRegion &r)
Читает регион из потока s в r и возвращает ссылку на поток.
См. также Формат операторов QDataStream.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/qregion.html