Qt::绘制框架-矢量线段-QGraphicsObject-QPainterPath

​​​​​​​二维矢量动画智能制作软件开发合集

链接:软件开发技术分享及记录合集​​​​​​​

个人开发二维矢量动画智能制作软件界面如下:

​​​​​​​


目录


绘制矢量线段

本篇介绍软件左侧工具栏→绘制工具→​​​​绘制矢量线段​​​

绘制分为两类:1)矢量直线绘制;2)矢量曲线绘制。


一、矢量线段绘制原理

在常规绘图软件中,矢量线段可分为两类,即矢量直线和矢量曲线。

为实现该功能,本软件采用继承QGraphicsItem类实现,在重写painter()函数,采用QPainter的drawPath方法。QPainterPath中有3种绘线方法,分别是lineTo、quadTo和curveTo,moveTo函数设置painter当前位置(函数介绍详见Qt官方文件)。

在本软件中,绘制矢量曲线和矢量直线均采用QPainterPath的curveTo函数实现,其数学概念对应贝塞尔曲线。在实现过程中,通过4个QPointF参数来描述,包含2个位置参数(表征本线段的起点和终点)和2个曲率控制参数(表征本线段起点和终点的曲率情况)。效果图如下:

其中,矢量直线是特殊的矢量曲线,在本软件中,采用方法为:将线段起始节点位置参数和对应的曲率控制节点位置参数设置相同,终点节点位置参数和对应的曲率控制节点位置参数设置相同,即可绘制出矢量直线。

二、矢量曲线绘制实现

1.代码示例

.h文件变量申明:

QPainterPath m_path;

QPointF m_p1Pos,m_p2Pos,m_c1Pos,m_c2Pos;

m_path.clear();
m_path.moveTo(m_p1Pos);
m_path.cubicTo(m_c1Pos,m_c2Pos,m_p2Pos);

2.示例效果

三、矢量直线绘制实现

1.代码示例

.h文件变量申明:

QPainterPath m_path;

QPointF m_p1Pos,m_p2Pos,m_c1Pos,m_c2Pos;

m_path.clear();
m_c1Pos = m_p1Pos;
m_c2Pos = m_p2Pos;
m_path.moveTo(m_p1Pos);
m_path.cubicTo(m_c1Pos,m_c2Pos,m_p2Pos);

2.示例效果


​​​​​​​​​​​​​​四、矢量线段软件测试视频

绘制线段


结束语

本文简要梳理了软件绘制矢量线段的实现框架,内容均为原创。

作者文笔水平一般,请大家多多包涵和指正,十分欢迎进一步交流学习。

若需,请联系本人小红书(小红书号:YzLab96),谢谢​​​​​​​

链接:  软件开发及测试所有视频合集见小红书​​​​​​​

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值