Qt::绘制框架-曲率控制-贝塞尔-QGraphicsObject-curveTo

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

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

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


目录

曲率调节控制

一、曲率调节控制原理

二、曲率绑定调节实现

1.代码示例

2.示例效果

三、曲率单一调节实现

1.代码示例

2.示例效果

​​​​​​​​​​​​​​四、曲率调节软件测试视频

结束语


曲率调节控制

本篇介绍软件左侧工具栏→绘制工具→​​​​曲率调节控制​​​

位置节点有尖点和贝塞尔节点,其中贝塞尔节点的曲率可调节控制。设计的对应功能包括:曲率大小设置、尖点和贝塞尔节点转换等。


一、曲率调节控制原理

为了操作和区分出位置节点是否为贝塞尔节点,贝塞尔节点需同时绘制出曲率控制手柄,既可经由曲率控制手柄调控矢量曲线曲率,也可看清位置节点的曲率控制节点个数,效果如下所示。

上图中,通过蓝绿色区分线条/节点的不同属性,其中,位置节点为绿色方块,曲率节点为蓝色方块,矢量线段为绿线,曲率控制手柄为蓝线。可以看到,一个位置节点可以有多个曲率控制手柄(特殊的,尖点没有曲率控制手柄),由此,也延伸出对曲率调节控制的2种模式:

① 模式一:【绑定调节】对有且仅有2个曲率控制手柄的位置节点,将2个曲率控制手柄进行绑定控制,以起到平滑矢量曲线的作用;(由于绘图需求,此模式被广泛采用。)

② 模式二:【单独调节】对于任意曲率控制手柄,均可单独调节。

曲率调节模式类型通过在位置节点设置属性变量(bool类型)来实现,通常采用alt键取反操作来设置该变量取值。

二、曲率绑定调节实现

1.代码示例

.h文件变量申明:

QList<QGraphicsItem*> posItems, curveItem;

QPointF delta;

QList<qreal> orginR;

.h文件方法申明:

/*角度计算::返回值为弧度制*/

qreal angleCal(qreal x,qreal y);

curveItems[0]->moveBy(delta.x(),delta.y());
qreal deltaX = curveItems[0]->x() - posItems[0]->x();
qreal deltaY = curveItems[0]->y() - posItems[0]->y();
qreal R0New = qSqrt(deltaX*deltaX+deltaY*deltaY);
qreal angle = angleCal(deltaX,deltaY);
qreal R1New = R0New*orginR[1]/orginR[0];
curveItems[1]->setX(posItems[0]->x()-R1New*qCos(angle));
curveItems[1]->setY(posItems[0]->y()-R1New*qSin(angle));

2.示例效果

绑定调节

三、曲率单一调节实现

1.代码示例

.h文件变量申明:

QList<QGraphicsItem*>  curveItem;

QPointF delta;

curveItems[0]->moveBy(delta.x(),delta.y());

2.示例效果

单一调节

​​​​​​​


​​​​​​​​​​​​​​四、曲率调节软件测试视频

曲率控制调节实现


结束语

本文简要梳理了软件曲率调节控制的实现框架,内容均为原创。

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

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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值