QT实现简单的下雪效果
1.读入雪花图片
1.1 使用QPixmap类读入图片
QPixmap pix("://snow2.png");
1.2 使用Prawpixmap在界面上显示图片
p.drawPixmap(50,50,20,20,pix);
2.设置随机的坐标点并显示图案
2.1 创建一个容器存放坐标点。
QList<QPoint> dispPos;
2.2 在构造函数中初始化这些坐标点,需要设置随机数种子,记得加上<QTime>头文件
qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));
/用随机数初始化这些坐标点,随机分布在窗口中
for(int i = 0;i<10;i++)
{
dispPos << QPoint(qrand()%width(),qrand()%height());
}
2.3 在窗口中在这些坐标点上显示雪花图案。
for(int i = 0;i<dispPos.count();i++)
p.drawPixmap(dispPos[i],pix.scaled(30,30));
3.控制雪花的”飘落”
3.1 使用timerEvent事件,先开启定时器
//每过50毫秒调用一次事件
timerId = startTimer(50);
3.2 在事件中改变雪花图案的y坐标值,使其下落
for(int i = 0;i<dispPos.count();i++)
{
dispPos[i].setY(dispPos[i].y() + 1);
if(dispPos[i].y() >= height())
{
dispPos[i].setY(0);
dispPos[i].setX(qrand()%width());
}
}
update();