首页 > web前端 > js教程 > 正文

用QT实现简单的下雪效果

一个新手
发布: 2017-09-14 11:16:13
原创
1662人浏览过


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 在窗口中在这些坐标点上显示雪花图案。
登录后复制
//将图片的大小设置为30*30for(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++){  //y坐标在原来基础上+1
    dispPos[i].setY(dispPos[i].y() + 1);    //判断:当y坐标超过窗口高度时
    if(dispPos[i].y() >= height())
    {    //将y坐标设置为0:从头开始
        dispPos[i].setY(0);    //但是x坐标进行随机,也就是从窗口顶随机位置出现
        dispPos[i].setX(qrand()%width());
    }
}//记得刷新界面update();
登录后复制

以上就是用QT实现简单的下雪效果的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号