二维矢量动画智能制作软件开发合集
个人开发二维矢量动画智能制作软件界面如下:
目录
选择节点
本篇介绍软件左侧工具栏→绘制工具→选择节点
选择节点的框线方式有2种:1)矩形框选;2)套索自定义选择。
一、选择节点操作原理
对于矢量图层,为了对特定的节点进行变换等操作,需要先选择特定节点,而选中的位置节点及其曲率控制节点采用笔刷(QBrush类型)的setStyle(Qt::SolidPattern)和setColor(Qt::red)进行标记区分,当被取消选择时,则笔刷需要更新setStyle(Qt::NoBrush)。选择节点具体实现流程为:
① 鼠标移动绘制选择区域;
② 采用QGraphicsScenescene的items方法(参数详见Qt官方文件)拿到Qlist<QGraphicsItem *>集合group;
③ group可能为空,若不为空,还需遍历group的所有子物体,满足条件的才是真正的节点集合,一般判断条件包括:可见判断、节点类型判断和父对象判断等;
④ 当选择节点之后,节点才处于可编辑状态。
另,QGraphicsScene中有setSelectionArea方法经过调整也可以实现选择节点功能,需要注意的使用此方法前,需要启用QGraphicsItem的setFlag中的QGraphicsItem::ItemIsSelectable。
根据鼠标绘制区域的不同,可分为矩形框选和套索自定义选择2种,其中,矩形框选即选择区域为矩形,套索自定义选择区域为鼠标移动路径绘制出的封闭区域。
二、矩形框选实现
1.代码示例
.h文件变量申明:
QPainterPath pathForSelect;
QGraphicsPathItem *pathForSelectItem;
QPointF startNodePos,endNodePos;
void Scene::mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent)
{
startNodePos = mouseEvent->scenePos();
}
void Scene::mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent)
{
endNodePos = mouseEvent->scenePos();
pathForSelect.clear();
pathForSelect.addRect(startNodePos.x(),startNodePos.y(),endNodePos.x()-startNodePos.x(),endNodePos.y()-startNodePos.y());
pathForSelectItem->setPath(pathForSelect);
}
2.示例效果
框选
三、套索自定义选择实现
1.代码示例
.h文件变量申明:
QPainterPath pathForSelect;
QGraphicsPathItem *pathForSelectItem;
void Scene::mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent)
{
if(isLassoMode)
{
pathForSelect.lineTo(mouseEvent->scenePos());
pathForSelectItem->setPath(pathForSelect);
}
}
2.示例效果
套索选择
四、选择节点软件测试视频
选择节点
结束语
本文简要梳理了软件【选择节点】的实现框架,内容均为原创。
作者文笔水平一般,请大家多多包涵和指正,十分欢迎进一步交流学习。
若需,请联系本人小红书(小红书号:YzLab96),谢谢。
链接: 软件开发及测试所有视频合集见小红书