Spec-Zone.ru › Qt 5.15

Класс QRegion

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

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

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

перечисление RegionType { Rectangle, Ellipse }
typedef const_iterator
typedef const_reverse_iterator

Public Functions

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)
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
const QRegion operator&(const QRegion &r) const
const QRegion operator&(const QRect &r) const
QRegion & operator&=(const QRegion &r)
QRegion & operator&=(const QRect &r)
const QRegion operator+(const QRegion &r) const
const QRegion operator+(const QRect &r) const
QRegion & operator+=(const QRegion &r)
QRegion & operator+=(const QRect &rect)
const QRegion operator-(const QRegion &r) const
QRegion & operator-=(const QRegion &r)
bool operator==(const QRegion &r) const
const QRegion operator^(const QRegion &r) const
QRegion & operator^=(const QRegion &r)
const QRegion operator|(const QRegion &r) const
QRegion & operator|=(const QRegion &r)

Related Non-Members

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() или циклов for C++11) даёт разбиение области на прямоугольники.

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

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 область представляет собой эллипс внутри прямоугольника.

тип QRegion::const_iterator

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

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

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

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

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

тип QRegion::const_reverse_iterator

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

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

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

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

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

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

QRegion::QRegion(const QBitmap &bm)

Создаёт область из растрового изображения bm.

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

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

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, многоугольная область определяется с помощью алгоритма обхода; если оно равно 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().

QRegion &QRegion::operator=(QRegion &&other)

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

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

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

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

QRegion::const_iterator QRegion::begin() const

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

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

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

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

QRect QRegion::boundingRect() const

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

QRegion::const_iterator QRegion::cbegin() const

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

Эта функция была добавлена в Qt 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.

QRegion::const_reverse_iterator QRegion::crbegin() const

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

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

QRegion::const_reverse_iterator QRegion::crend() const

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

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

QRegion::const_iterator QRegion::end() const

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

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

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

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

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

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

Region Intersection

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

Эта функция была добавлена в 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 &region) 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().

QRegion::const_reverse_iterator QRegion::rbegin() const

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

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

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

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

int QRegion::rectCount() const

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

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

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 (по возрастанию X для одинакового Y) и соответствовать следующим ограничениям:

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

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

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

Возвращает область, из которой вычтена область r.

Region Subtraction

На рисунке показан результат вычитания эллипса справа из эллипса слева (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.

Region Union

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

Эта функция была добавлена в 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.

Region XORed

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

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

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

QVariant QRegion::operator QVariant() const

Возвращает область как QVariant

bool QRegion::operator!=(const QRegion &other) const

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

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

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

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

const 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.

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

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

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

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

const 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.

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

const 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-5.15/qregion.html

Spec-Zone.ru

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