QRegion

一、描述

QRegion表示一个区域。QRegion与QPainter::setClipRegion()一起使用,可将绘制区域限制为需要绘制的区域。QRegion可用于限制重绘更新区域。

二、类型成员

1、QRegion::RegionType

  • Rectangle:矩形
  • Ellipse:椭圆

2、typedef QRegion::const_iterator。组成区域的非重叠矩形上的迭代器。所有矩形的并集等于原始区域(区域可以有多个区域组合而成)。

3、typedef QRegion::const_reverse_iterator。在组成区域的非重叠矩形上的反向迭代器。

三、成员函数

1、QRegion(const QBitmap &bm)

从位图构造一个区域。

这么一张位图(二值图)。此图构造区域后,其中的白色部分是不可绘制的,黑色部分是可以绘制的。例:

    QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing,true);
    painter.setPen(QPen(Qt::cyan, 3, Qt::DashDotLine));
    QBitmap bitMap(":/D:/qqq.jpeg");
    QRegion region(bitMap);
    painter.setClipRegion(region);

    painter.setBrush(Qt::blue);
    painter.drawEllipse(QRect(0,0,200,300));

创建这样的复杂绘制区域会降低效率。

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

从多边形创建区域。

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

从矩形创建区域。

4、QRect boundingRect()

区域的外接矩形。

5、bool contains(const QPoint &p)

区域是否包含点。

6、bool contains(const QRect &r)

区域是否包含矩形。

7、QRegion intersected(const QRegion &r)

两区域的交集。

8、QRegion intersected(const QRect &rect)

区域和矩形的交集。

9、bool intersects(const QRegion &region)

区域是否和区域相交。

10、bool intersects(const QRect &rect)

区域是否和矩形相交。

11、bool isEmpty() const / bool isNull()

区域是否为空,空区域不含任何点。

12、int rectCount()

区域中的矩形个数。

    QBitmap bitMap(":/D:/qqq.jpeg");
    QRegion region(bitMap);
    painter.setClipRegion(region);

    painter.setBrush(Qt::blue);
    painter.drawEllipse(QRect(0,0,200,300));
    qDebug()<<"矩形个数"<<region.rectCount();
    for (auto it = region.begin();it != region.end();++it)
    {
        qDebug()<<*it;
    }

这个位图设置的区域是由一个个小的矩形组成的。

13、void setRects(const QRect *rects, int number)

使用由rects和number指定的矩形数组设置区域。 

    QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing,true);
    painter.setPen(QPen(Qt::cyan, 3, Qt::DashDotLine));
    QRegion region;
    QRect rects [] = {QRect(20,20,100,200),QRect(20,300,100,100)};
    region.setRects(rects,2);
    painter.setClipRegion(region);

    painter.setBrush(Qt::blue);

    painter.drawRect(QRect(20,20,100,200));
    painter.drawRect(QRect(20,300,100,100));
    painter.setBrush(Qt::red);

    painter.drawRect(QRect(20,100,400,250));

 14、QRegion subtracted(const QRegion &r) const

获取两个区域的差集。

15、void QRegion::translate(const QPoint &point)

平移区域。

16、QRegion translated(const QPoint &p) const

获取平移后的副本。

17、QRegion united(const QRegion &r)

        QRegion united(const QRect &rect)

获取并集。

18、QRegion xored(const QRegion &r)

获取对称差集。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值