QT5之2D绘图-绘制路径
2024-09-06 11:00:41
在绘制一个复杂的图形的时候,如果你需要重复绘制一个这样的图形,就可以使用到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);
}
最新文章
- 冰冻三尺非一日之寒-socket
- heap c++ 操作 大顶堆、小顶堆
- 2014 Super Training #8 A Gears --并查集
- vim Project
- 40免费的 jQuery &; CSS3 图片热点特效
- eclipse中输入@符号自动提示Annotation
- $.ajax获取不到数据问题解决
- HTML之学习笔记(八)表格
- 求m区间内的最小值
- SpringMVC环境搭建---xml版及注解版
- 微信小程序(六) 文章详情静态页面detail
- 与图论的邂逅04:LCT
- React条件渲染
- 前端面试之Javascript
- linux下GCC编译文件
- web(二)html
- 【Vue学习笔记1】基于Vue2.2.6版本
- VMware Coding Challenge: Removing Duplicates Entries
- Python ,pickle
- 在Mac中设置Ctrl+C/V进行复制/粘贴
热门文章
- lemon oa前端页面——由user-base-list谈项目组织
- OpenWrt 安装python-sqlite3失败
- InnoDB: Error: io_setup() failed with EAGAIN after 5 attempts
- LeetCode题解汇总
- pat1043:输出PATest
- [IT学习]GIT 学习
- ora-12541无监听的一种场景
- rhel6 中安装使用finger命令
- ALLOWED_HOSTS = ['*']
- Ubuntu下Jupyter Notebook的安装