绘画系统(14):【类】QRegion[官翻]

QRegion 类

QRegion类为画家指定一个剪辑区域。

Header#include < QRegion >
qmakeQT += 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

指定要创建的区域的形状。

ConstantValueDescription
Rectangle0该区域覆盖整个矩形。
Ellipse1该区域是矩形内的椭圆。

typedef const_iterator

组成区域的不重叠矩形上的迭代器
所有矩形的并集等于原始区域。QRegion不提供可变的迭代器。
另请参见begin() 和end() 。

typedef const_reverse_iterator

在组成区域的非重叠矩形上的反向迭代器
所有矩形的并集等于原始区域。QRegion不提供可变的迭代器。
另请参见rbegin() 和rend() 。

公共函数

构造析构交换赋值

  1. QRegion(const QBitmap &bm)
  2. QRegion(QRegion &&other)
  3. QRegion(const QRegion &r)
  4. QRegion(const QPolygon &a, Qt::FillRule fillRule = Qt::OddEvenFill)
  5. QRegion(const QRect &r, QRegion::RegionType t = Rectangle)
  6. QRegion(int x, int y, int w, int h, QRegion::RegionType t = Rectangle)
  7. QRegion()
  8. QRegion & operator=(QRegion &&other)
  9. QRegion & operator=(const QRegion &r)
  10. void swap(QRegion &other)

迭代器

  1. QRegion::const_iterator begin() const
  2. QRegion::const_iterator end() const
  3. QRegion::const_iterator cbegin() const
  4. QRegion::const_iterator cend() const
  5. QRegion::const_reverse_iterator crbegin() const
  6. QRegion::const_reverse_iterator crend() const
  7. QRegion::const_reverse_iterator rbegin() const
  8. QRegion::const_reverse_iterator rend() const

界限

  1. bool contains(const QPoint &p) const
  2. bool contains(const QRect &r) const
  3. bool isEmpty() const
  4. bool isNull() const

集合运算

  1. QRegion intersected(const QRegion &r) const
  2. QRegion intersected(const QRect &rect) const
  3. bool intersects(const QRegion &region) const
  4. bool intersects(const QRect &rect) const
  5. QRegion united(const QRegion &r) const
  6. QRegion united(const QRect &rect) const
  7. QRegion xored(const QRegion &r) const
  8. QRegion subtracted(const QRegion &r) const

矩形

  1. QRect boundingRect() const
  2. int rectCount() const
  3. void setRects(const QRect *rects, int number)

平移

  1. void translate(int dx, int dy)
  2. void translate(const QPoint &point)
  3. QRegion translated(int dx, int dy) const
  4. QRegion translated(const QPoint &p) const

运算符重载

  1. QVariant operator QVariant() const
  2. bool operator!=(const QRegion &other) const
  3. const QRegion operator&(const QRegion &r) const
  4. const QRegion operator&(const QRect &r) const
  5. QRegion & operator&=(const QRegion &r)
  6. QRegion & operator&=(const QRect &r)
  7. const QRegion operator+(const QRegion &r) const
  8. const QRegion operator+(const QRect &r) const
  9. QRegion & operator+=(const QRegion &r)
  10. QRegion & operator+=(const QRect &rect)
  11. const QRegion operator-(const QRegion &r) const
  12. QRegion & operator-=(const QRegion &r)
  13. bool operator==(const QRegion &r) const
  14. const QRegion operator^(const QRegion &r) const
  15. QRegion & operator^=(const QRegion &r)
  16. const QRegion operator|(const QRegion &r) const
  17. QRegion & operator|=(const QRegion &r)

相关的非成员

  1. QDataStream & operator<<(QDataStream &s, const QRegion &r)
  2. QDataStream & operator>>(QDataStream &s, QRegion &r)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值