在绘制一个复杂的图形的时候,如果你需要重复绘制一个这样的图形,就可以使用到QPainterPath类,然后使用QPainter::drawPath()来进行绘制。

QPainterPath类为绘制操作提供了一个容器,可以用来创建图形并且重复使用。一个绘图路径就是由多个矩形、椭圆、线条或者曲线等组成的对象,一个路径可以是封闭的,例如矩形和椭圆;也可以是非封闭的,例如线条和曲线。

一、简单应用

void Widget::paintEvent(QPaintEvent *)
{
QPainterPath path;
path.addEllipse(100, 100, 50, 50);
path.lineTo(200, 200);
QPainter painter(this);
painter.setPen(Qt::blue);
painter.setBrush(Qt::red);
painter.drawPath(path);
}

当你创建了一个QPainterPath对象后,可以使用lineTo()、arcTo()、cubicTo()和quadTo()等函数将直线或者曲线添加到路径中

二、复制图形

QPainterPath path2;
path2.addPath(path);
path2.translate(100,0);
painter.drawPath(path2);

三、绘制图形时的当前位置

1、创建路径后,默认是从(0, 0)点开始绘制的

2、可以使用moveTo()函数来改变当前点的位置

void Widget::paintEvent(QPaintEvent *)
{
QPainterPath path;
path.addRect(50, 50, 40, 40); //移动到(100, 100)点
path.moveTo(100, 100); path.lineTo(200, 200);
QPainter painter(this);
painter.drawPath(path);
}

最新文章

  1. 冰冻三尺非一日之寒-socket
  2. heap c++ 操作 大顶堆、小顶堆
  3. 2014 Super Training #8 A Gears --并查集
  4. vim Project
  5. 40免费的 jQuery & CSS3 图片热点特效
  6. eclipse中输入@符号自动提示Annotation
  7. $.ajax获取不到数据问题解决
  8. HTML之学习笔记(八)表格
  9. 求m区间内的最小值
  10. SpringMVC环境搭建---xml版及注解版
  11. 微信小程序(六) 文章详情静态页面detail
  12. 与图论的邂逅04:LCT
  13. React条件渲染
  14. 前端面试之Javascript
  15. linux下GCC编译文件
  16. web(二)html
  17. 【Vue学习笔记1】基于Vue2.2.6版本
  18. VMware Coding Challenge: Removing Duplicates Entries
  19. Python ,pickle
  20. 在Mac中设置Ctrl+C/V进行复制/粘贴

热门文章

  1. lemon oa前端页面——由user-base-list谈项目组织
  2. OpenWrt 安装python-sqlite3失败
  3. InnoDB: Error: io_setup() failed with EAGAIN after 5 attempts
  4. LeetCode题解汇总
  5. pat1043:输出PATest
  6. [IT学习]GIT 学习
  7. ora-12541无监听的一种场景
  8. rhel6 中安装使用finger命令
  9. ALLOWED_HOSTS = ['*']
  10. Ubuntu下Jupyter Notebook的安装