Spec-Zone.ru › Qt

Класс QRegion

Класс QRegion задаёт область обрезки для отрисовщика. Подробнее...

Заголовок: #include <QRegion>
CMake: find_package(Qt6 COMPONENTS Gui REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
  • Список всех членов, включая наследуемые

Типы публичного доступа

перечисление ТипОбласти { Прямоугольник, Эллипс }
КонстантныйИтератор
КонстантныйОбратныйИтератор

Публичные функции

QRegion(const QBitmap &bm)
QRegion(QRegion &&other)
QRegion(const QRegion &r)
QRegion(const QPolygon &a, Qt::FillRule fillRule = Qt::OddEvenFill)
QRegion(const QRect &r, QRegion::RegionType t = Rectangle)
QRegion(int x, int y, int w, int h, QRegion::RegionType t = Rectangle)
QRegion()
QRegion & operator=(QRegion &&other)
QRegion & operator=(const QRegion &r)
QRegion::const_iterator begin() const
QRect boundingRect() const
QRegion::const_iterator cbegin() const
QRegion::const_iterator cend() const
bool contains(const QPoint &p) const
bool contains(const QRect &r) const
QRegion::const_reverse_iterator crbegin() const
QRegion::const_reverse_iterator crend() const
QRegion::const_iterator end() const
QRegion intersected(const QRegion &r) const
QRegion intersected(const QRect &rect) const
bool intersects(const QRegion &region) const
bool intersects(const QRect &rect) const
bool isEmpty() const
bool isNull() const
QRegion::const_reverse_iterator rbegin() const
int rectCount() const
QRegion::const_reverse_iterator rend() const
void setRects(const QRect *rects, int number)
QRegion subtracted(const QRegion &r) const
void swap(QRegion &other)
HRGN toHRGN() const
void translate(int dx, int dy)
void translate(const QPoint &point)
QRegion translated(int dx, int dy) const
QRegion translated(const QPoint &p) const
QRegion united(const QRegion &r) const
QRegion united(const QRect &rect) const
QRegion xored(const QRegion &r) const
QVariant operator QVariant() const
bool operator!=(const QRegion &other) const
QRegion operator&(const QRegion &r) const
QRegion operator&(const QRect &r) const
QRegion & operator&=(const QRegion &r)
QRegion & operator&=(const QRect &r)
QRegion operator+(const QRegion &r) const
QRegion operator+(const QRect &r) const
QRegion & operator+=(const QRegion &r)
QRegion & operator+=(const QRect &rect)
QRegion operator-(const QRegion &r) const
QRegion & operator-=(const QRegion &r)
bool operator==(const QRegion &r) const
QRegion operator^(const QRegion &r) const
QRegion & operator^=(const QRegion &r)
QRegion operator|(const QRegion &r) const
QRegion & operator|=(const QRegion &r)

Статические публичные члены

QRegion fromHRGN(HRGN hrgn)

Связанные нечлены

QDataStream & operator<<(QDataStream &s, const QRegion &r)
QDataStream & operator>>(QDataStream &s, QRegion &r)

Подробное описание

QRegion используется с QPainter::setClipRegion(), чтобы ограничить область рисования тем, что нужно нарисовать. Также есть функция QWidget::repaint(), которая принимает параметр QRegion. QRegion — лучший инструмент для минимизации области экрана, которая должна быть обновлена при перерисовке.

Этот класс не подходит для создания фигур для отрисовки, особенно в виде контуров. Используйте QPainterPath для создания путей и фигур для использования с QPainter.

QRegion — это неявное класс.

Создание и использование областей

Область может быть создана из прямоугольника, эллипса, многоугольника или растрового изображения. Сложные области могут быть созданы путём комбинирования простых областей, используя united(), intersected(), subtracted() или xored() (исключающее ИЛИ). Вы можете переместить область, используя translate().

Вы можете проверить, является ли область пустой или содержит ли она QPoint или QRect. Граница области может быть найдена с помощью boundingRect().

Итерация по области (с помощью begin(), end() или циклов C++11 ranged-for) даёт разбиение области на прямоугольники.

Пример использования сложных областей:

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
}

См. также QPainter::setClipRegion, QPainter::setClipRect и QPainterPath.

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

перечисление QRegion::RegionType

Определяет форму создаваемой области.

Константа Значение Описание
QRegion::Rectangle 0 область покрывает весь прямоугольник.
QRegion::Ellipse 1 область представляет собой эллипс внутри прямоугольника.

[since 5.8] QRegion::const_iterator

Итератор по неперекрывающимся прямоугольникам, составляющим область.

Объединение всех прямоугольников равно исходной области.

QRegion не предоставляет изменяемые итераторы.

Этот typedef был введён в Qt 5.8.

См. также begin() и end().

[since 5.8] QRegion::const_reverse_iterator

Обратный итератор по неперекрывающимся прямоугольникам, составляющим область.

Объединение всех прямоугольников равно исходной области.

QRegion не предоставляет изменяемые итераторы.

Этот typedef был введён в Qt 5.8.

См. также rbegin() и rend().

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

QRegion::QRegion(const QBitmap &bm)

Конструирует область из растрового изображения bm.

Полученная область состоит из пикселей в растровом изображении bm, которые имеют значение Qt::color1, как если бы каждый пиксель был прямоугольником 1x1.

Этот конструктор может создавать сложные области, что замедлит отрисовку при использовании. Обратите внимание, что отрисовку масок растровых изображений можно значительно ускорить, используя QPixmap::setMask().

[since 5.7] QRegion::QRegion(QRegion &&other)

Перемещающий конструктор новой области из области other. После вызова other становится пустой.

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

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

QRegion::QRegion(const QRegion &r)

Создаёт новую область, равную области r.

QRegion::QRegion(const QPolygon &a, Qt::FillRule fillRule = Qt::OddEvenFill)

Создаёт область многоугольника из массива точек a с правилом заливки, заданным fillRule.

Если fillRule равно Qt::WindingFill, область многоугольника определяется с помощью алгоритма обхода; если fillRule равно Qt::OddEvenFill, используется алгоритм заливки чётность/нечётность.

Предупреждение: Этот конструктор может быть использован для создания сложных областей, что замедлит отрисовку при использовании.

QRegion::QRegion(const QRect &r, QRegion::RegionType t = Rectangle)

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

Создаёт область на основе прямоугольника r с типом области t.

Если прямоугольник недействителен, будет создана пустая область.

См. также QRegion::RegionType.

QRegion::QRegion(int x, int y, int w, int h, QRegion::RegionType t = Rectangle)

Создаёт прямоугольную или эллиптическую область.

Если t равно Rectangle, область представляет собой заполненный прямоугольник (x, y, w, h). Если t равно Ellipse, область представляет собой заполненный эллипс с центром в точке (x + w / 2, y + h / 2) и размером (w, h).

QRegion::QRegion()

Создаёт пустую область.

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

[since 5.2] QRegion &QRegion::operator=(QRegion &&other)

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

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

QRegion &QRegion::operator=(const QRegion &r)

Присваивает r этой области и возвращает ссылку на область.

[since 5.8] QRegion::const_iterator QRegion::begin() const

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

Объединение всех прямоугольников равно исходной области.

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

См. также rbegin(), cbegin() и end().

QRect QRegion::boundingRect() const

Возвращает ограничивающий прямоугольник этой области. Пустая область возвращает прямоугольник, являющийся QRect::isNull().

[since 5.8] QRegion::const_iterator QRegion::cbegin() const

То же, что и begin().

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

[since 5.8] QRegion::const_iterator QRegion::cend() const

То же, что и end().

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

bool QRegion::contains(const QPoint &p) const

Возвращает true, если область содержит точку p; в противном случае возвращает false.

bool QRegion::contains(const QRect &r) const

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

Возвращает true если область перекрывает прямоугольник r; в противном случае возвращает false.

[since 5.8] QRegion::const_reverse_iterator QRegion::crbegin() const

То же, что и rbegin().

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

[since 5.8] QRegion::const_reverse_iterator QRegion::crend() const

То же, что и rend().

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

[since 5.8] QRegion::const_iterator QRegion::end() const

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

Объединение всех прямоугольников равно исходной области.

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

См. также rend(), cend() и begin().

[static, since 6.0] QRegion QRegion::fromHRGN(HRGN hrgn)

Возвращает QRegion, эквивалентную заданному hrgn.

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

QRegion QRegion::intersected(const QRegion &r) const

Возвращает область, являющуюся пересечением этой области и r.

Region Intersection

Рисунок показывает пересечение двух эллиптических областей.

См. также subtracted(), united() и xored().

QRegion QRegion::intersected(const QRect &rect) const

Возвращает область, являющуюся пересечением этой области и заданного rect.

См. также subtracted(), united() и xored().

bool QRegion::intersects(const QRegion &region) const

Возвращает true , если эта область пересекается с областью region, в противном случае возвращает false.

bool QRegion::intersects(const QRect &rect) const

Возвращает true , если эта область пересекается с rect, в противном случае возвращает false.

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

[since 5.0] bool QRegion::isNull() const

Возвращает true , если область пуста; в противном случае возвращает false. Пустая область — это область, не содержащая ни одной точки. Эта функция аналогична isEmpty

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

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

[since 5.8] QRegion::const_reverse_iterator QRegion::rbegin() const

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

Объединение всех прямоугольников равно исходной области.

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

См. также begin(), crbegin() и rend().

int QRegion::rectCount() const

Возвращает количество прямоугольников, из которых состоит эта область. То же, что и end() - begin().

[since 5.8] QRegion::const_reverse_iterator QRegion::rend() const

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

Объединение всех прямоугольников равно исходной области.

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

См. также end(), crend() и rbegin().

void QRegion::setRects(const QRect *rects, int number)

Устанавливает область, используя массив прямоугольников, заданных rects и number. Прямоугольники должны быть отсортированы по возрастанию Y-координаты и по возрастанию X-координаты, с учетом следующих ограничений:

  • Прямоугольники не должны пересекаться.
  • Все прямоугольники с заданной координатой top должны иметь одинаковую высоту.
  • Два прямоугольника не должны соприкасаться по горизонтали (в этом случае они должны быть объединены в один более широкий прямоугольник).
  • Прямоугольники должны быть отсортированы в порядке возрастания Y, а X - в порядке возрастания.

QRegion QRegion::subtracted(const QRegion &r) const

Возвращает область, полученную вычитанием области r из этой области.

Region Subtraction

Рисунок показывает результат, когда эллипс справа вычитается из эллипса слева (left - right).

См. также intersected(), united() и xored().

void QRegion::swap(QRegion &other)

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

[since 6.0] HRGN QRegion::toHRGN() const

Возвращает HRGN, эквивалентный данной области.

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

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 относительно текущего положения. Положительные значения смещают область вправо и вниз.

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

QRegion QRegion::translated(const QPoint &p) const

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

Возвращает копию области, сдвинутой на p.x() по оси X и p.y() по оси Y относительно текущего положения. Положительные значения смещают прямоугольник вправо и вниз.

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

QRegion QRegion::united(const QRegion &r) const

Возвращает область, являющуюся объединением этой области и r.

Region Union

На рисунке показано объединение двух эллиптических областей.

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

QRegion QRegion::united(const QRect &rect) const

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

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

QRegion QRegion::xored(const QRegion &r) const

Возвращает область, являющуюся исключающим ИЛИ (XOR) этой области и r.

Region XORed

На рисунке показано исключающее ИЛИ двух эллиптических областей.

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

QVariant 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

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

QRegion &QRegion::operator&=(const QRegion &r)

Применяет функцию intersected() к этой области и r и присваивает результат этой области. r1&=r2 эквивалентно r1 = r1.intersected(r2).

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

QRegion &QRegion::operator&=(const QRect &r)

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

QRegion QRegion::operator+(const QRegion &r) const

Применяет функцию united() к этой области и r. r1+r2 эквивалентно r1.united(r2).

См. также united() и operator|().

QRegion QRegion::operator+(const QRect &r) const

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

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().

bool QRegion::operator==(const QRegion &r) const

Возвращает true, если область равна r; в противном случае возвращает 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/qt-6.2/qregion.html

Spec-Zone.ru

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