文章目录
QRegion 类
QRegion类为画家指定一个剪辑区域。
Header | #include < QRegion > |
---|---|
qmake | QT += gui |
Inherited By |
详述
QRegion与QPainter::setClipRegion() 一起使用以将绘画区域限制为需要绘画的区域。 还有一个QWidget :: repaint() 函数,它带有QRegion参数。 QRegion是最小化要通过重绘更新的屏幕区域数量的最佳工具。
此类不适用于构造要渲染的形状,尤其是轮廓。 使用QPainterPath创建用于QPainter的路径和形状。
QRegion是一个隐式共享的类。
创建和使用区域
可以从矩形,椭圆形,多边形或位图创建区域。 可以通过使用united() ,intersected() ,subtracted() 或xored() (异或)组合简单区域来创建复杂区域。 您可以使用translate() 移动区域。
您可以测试区域isEmpty() 还是包含QPoint或QRect。 可以使用boundingRect() 找到边界矩形。
在区域上进行迭代(使用begin() ,end() 或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。
公共类型
enum RegionType
指定要创建的区域的形状。
Constant | Value | Description |
---|---|---|
Rectangle | 0 | 该区域覆盖整个矩形。 |
Ellipse | 1 | 该区域是矩形内的椭圆。 |
typedef const_iterator
组成区域的不重叠矩形上的迭代器
所有矩形的并集等于原始区域。QRegion不提供可变的迭代器。
另请参见begin() 和end() 。
typedef const_reverse_iterator
在组成区域的非重叠矩形上的反向迭代器
所有矩形的并集等于原始区域。QRegion不提供可变的迭代器。
另请参见rbegin() 和rend() 。
公共函数
构造析构交换赋值
- 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)
- void swap(QRegion &other)
迭代器
- QRegion::const_iterator begin() const
- QRegion::const_iterator end() const
- QRegion::const_iterator cbegin() const
- QRegion::const_iterator cend() const
- QRegion::const_reverse_iterator crbegin() const
- QRegion::const_reverse_iterator crend() const
- QRegion::const_reverse_iterator rbegin() const
- QRegion::const_reverse_iterator rend() const
界限
- bool contains(const QPoint &p) const
- bool contains(const QRect &r) const
- bool isEmpty() const
- bool isNull() 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
- QRegion united(const QRegion &r) const
- QRegion united(const QRect &rect) const
- QRegion xored(const QRegion &r) const
- QRegion subtracted(const QRegion &r) const
矩形
- QRect boundingRect() const
- int rectCount() const
- void setRects(const QRect *rects, int number)
平移
- void translate(int dx, int dy)
- void translate(const QPoint &point)
- QRegion translated(int dx, int dy) const
- QRegion translated(const QPoint &p) 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)
相关的非成员
- QDataStream & operator<<(QDataStream &s, const QRegion &r)
- QDataStream & operator>>(QDataStream &s, QRegion &r)