链接:软件开发技术分享及记录合集
个人开发二维矢量动画智能制作软件界面如下:
目录
结束语
绘制矢量线段
本篇介绍软件左侧工具栏→绘制工具→绘制矢量线段
绘制分为两类: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),谢谢。
链接: 软件开发及测试所有视频合集见小红书