Qt::填充类型-渐变样式-QGradient

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

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

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


目录

一、渐变样式原理

二、渐变样式代码实现

三、渐变样式软件测试视频

结束语


一、渐变样式原理

当填充类型设置为渐变样式,其效果为在图形内,颜色按照一定规则进行有序变化,本软件设置了4种渐变类型,分别是:1)线性渐变;2)对称渐变;3)辐射渐变;4)锥向渐变。

渐变效果可采用Qt的QBrush中的QGradient类实现,首先根据需求设置颜色渐变类型及颜色规则,颜色规则的定义按照需求设置,设置节点位置及对应颜色(节点位置在0.1至1.0范围内),参考界面如下:

QGradient类下有3个子类:QLinearGradient,QRadialGradient和QConicalGradient。实现原理上:线性渐变和反射渐变采用QLinearGradient实现,区别在于Spread参数的设置,反射渐变需将Spread参数设置为QGradient::RepeatSpread即可。每个渐变类详见介绍Qt官方文件,QLinearGradient需要设置起始节点和终止节点2个参数,QRadialGradient辐射渐变需要设置渐变中心和渐变半径2个参数;QConicalGradient锥向渐变需要设置渐变中心和渐变起始位置2个参数。为实现渐变参数交互,需要引入渐变手柄协助参数传递。

二、渐变样式代码实现

.h文件变量申明:

int gType;

QList<qreal> pG;

QList<QColor> cG;

QBrush gradientBrush;

QGraphicsItem *Item;

switch(gType)
{
case 0:
{
    QLinearGradient g;
    g.setStart(Item->gStart);
    g.setFinalStop(Item->gEnd);
    for(int i = 0; i<cG.count(); i++)
        g.setColorAt(pG[i],cG[i]);
    g.setSpread(QGradient::PadSpread);
    gradientBrush = QBrush(g);
}
    break;
case 1:
{
    QLinearGradient g;
    g.setStart(Item->gStart);
    g.setFinalStop(Item->gEnd);
    for(int i = 0; i<cG.count(); i++)
        g.setColorAt(pG[i],cG[i]);
    g.setSpread(QGradient::ReflectSpread);
    gradientBrush = QBrush(g);
}
    break;
case 2:
{
    QRadialGradient g;
    g.setCenter(Item->gStart);
    QLineF l(Item->gStart,Item->gEnd);
    g.setCenterRadius(l.length());
    for(int i = 0; i<cG.count(); i++)
        g.setColorAt(pG[i],cG[i]);
    g.setSpread(QGradient::ReflectSpread);
    gradientBrush = QBrush(g);
}
    break;
case 3:
{
    QConicalGradient g;
    g.setCenter(Item->gStart);
    QLineF l1(Item->gStart,Items->gStart+QPointF(1,0));
    QLineF l2(Item->gStart,Item->gEnd);
    g.setAngle(l1.angleTo(l2));
    for(int i = 0; i<cG.count(); i++)
        g.setColorAt(pG[i],cG[i]);
    g.setSpread(QGradient::ReflectSpread);
    gradientBrush = QBrush(g);
}
    break;
}

三、渐变样式软件测试视频

渐变样式测试


结束语

本文简要梳理了软件【渐变样式】的实现框架,内容均为原创。

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

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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值