Qt类之-QRegion

原文地址:http://blog.csdn.net/aucaser/article/details/50053161

 

描述说明

 

QRegion为painter指定一个裁剪区域。 QRegion 是使用 QPainter:setClipRegion ()来限制画图区域。 还有一个 QWidget:repaint()函数,它接受一个 QRegion 参数。QRegion 是最大化降低屏幕区域被repaint更新的最好工具。

这个类不适合构建形状,尤其是轮廓。 可以结合QPainter使用 QPainterPath创建路径和形状 。

QRegion 是一个 隐式共享 类。

创建和使用区域

可以从矩形、椭圆、多边形或者一个位图创建区域。可以利用 united(), intersected(), subtracted(), or xored()(异或)将简单区域创建复杂区域。你也可以通过translate()来移动一个区域。

可以测试是否isEmpty()或者是否contains()一个QPoint(点)或者QRect(矩形)。可以使用boundingRect()找到一个边界矩形。

rects()函数将区域分成多个矩形。

以下是利用复杂区域的例子:

void Widget::paintEvent(QPaintEvent *e)
{
    QRect rect1(100, 100, 200, 80);
    QRect rect2(100, 120, 250, 100);
    QRegion r1(rect1);
    QRegion r2(rect2);    
    QRegion r3 = r1.intersected(r2);         

    QPainterPath path;
    path.addRegion(r3);
    QPainter painter(this);
    QPen pen(QColor(255,0,0),2);
    painter.setPen(Qt::green);
    painter.drawRect(rect1);

    painter.setPen(Qt::red);
    painter.drawRect(rect2);


    painter.setPen(pen);
    painter.setBrush(Qt::yellow);
    painter.drawPath(path);
}

结果显示

这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值