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); }
结果显示
相关文章推荐
- pycharm 快捷键
- listControl添加鼠标浮动提示
- spring mvc 框架搭建及详解
- ExtJS学习之路碎碎念
- EsayUI + MVC + ADO.NET(工作单元)
- PHP OOP面向对象详细介绍总结(代码实例子)
- neo4j的php客户端neoclient连接和使用
- 把vim打造成C++ IDE
- 架构师:成为架构师可能会面临的问题
- sax解析xml异常
- 程序员英语学习三步曲
- LeetCode 104 Maximum Depth of Binary Tree
- 用VASP计算GW+BSE
- 63 Which three components does the Scheduler use for managing tasks within the Oracle environment? (
- 关于元素个数为0的数组使用心得!
- EsayUI + MVC + ADO.NET(仓储基础接口)
- Jquery操作select
- jsp 页面 input 中指定时间格式
- c++11细粒度的线程安全
- Liunx下 ftp服务器的搭建