类型"/>
Qt::填充类型
二维矢量动画智能制作软件开发合集
链接:软件开发技术分享及记录合集
个人开发二维矢量动画智能制作软件界面如下:
目录
一、渐变样式原理
二、渐变样式代码实现
三、渐变样式软件测试视频
结束语
一、渐变样式原理
当填充类型设置为渐变样式,其效果为在图形内,颜色按照一定规则进行有序变化,本软件设置了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),谢谢。
链接: 软件开发及测试所有视频合集见小红书
更多推荐
Qt::填充类型
发布评论