您的位置:首页 > 其它

QRegion

2015-11-26 11:05 375 查看

描述说明

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);
}


结果显示

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: