描述说明
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);
}