先上效果
实现原理:利用粒子发射器的shape属性实现。qml提供了三种类型EllipseShape, LineShape, and MaskShape。利用MaskShape实现即可。现在实现的这种方式是利用的现有图片(图片是png格式的)
,可以利用Canvas动态生成图片显示,有兴趣的可以试试。
代码如下:
import QtQuick 2.7
import QtQuick.Particles 2.0
Rectangle {
//id : root
width: 600
height: 600
color: "black"
//[1]
//实现字的粒子效果 通过Emitter的 MaskShape 实现(图片背景要是透明的)
//
property url soururl: "qrc:/1.png"
property var urlstr: "qrc:/%1.png"
property int num: 1
ParticleSystem {
x: 0;
y:0
width: 300
height: 200
anchors.centerIn: parent
ImageParticle {
source: "qrc:///particleresources/glowdot.png"
z: 2
anchors.fill: parent
color: "#336666CC"
colorVariation: 0.6
}
Emitter {
anchors.fill: parent
emitRate: 6000
lifeSpan: 720
size: 10
clip: true
endSize: 13
velocity: PointDirection { y: 3; yVariation:20 }
shape: MaskShape {
source: soururl
}
}
}
Timer {
interval: 2000; running: true; repeat: true
onTriggered: {
soururl = urlstr.arg(num);
num++;
if (num == 4)
num = 1;
}
}
//[1]
}