初级软件实作的作业。用于实现鼠标跟随的特效。
具体的效果可以打开软件查看,另外也附了演示动图。
- 水滴
- 喷枪
- 彩球
- 星星
Windows 10 Version 1909 专业版
- 软件由分界线分为四个区域,鼠标移动到每一个区域跟随显示的特效不同。
- 四个区域的顶部会分别显示各自的特效名,中间的文字会显示鼠标在软件中的区域。
- 确保各个特效区域之间的独立,即该区域的动画不会移动到别的区域。
- 开发语言:C++
- 开发框架:Qt 5.12.7
- 开发工具:Qt Creator 4.11.0(Community)
- 显示一个绘图区:背景色为白色。将这个绘图区分成4个子区域,画出分界线分割。
- 设定一个计时器,10毫秒到期,到期时获取用户的鼠标坐标,根据坐标判断用户所在的子区域(左上、左下、右上、右下),再显示相应区域的特效图案。
- 特效图案需要为一个动态图片,因此可以利用Qt框架中的动画类,设定动画的存活时间,再设定动画每一个时间点所作的动作:此处是用QPainter类在每一个时间点画出变化的图案,连贯起来看就是一个动画。
- 水滴特效:鼠标经过的地方显示水滴。先画出一个圆,然后画出另外一个相同圆心的、半径为动画的value的圆。用前者的路径减去后者的,得到一个圆环,圆环的环宽越来越小,则看起来为水滴效果。
- 喷枪特效:鼠标就像喷枪一样,经过的地方显示轨迹。喷枪的特点是一开始的半径小,后来的半径大。因此需要画半径随着时间而增大到规定值的圆即可。
- 彩球特效:鼠标经过的地方显示四散的彩色小球。彩色的RGB值用随机数产生器可以得到,移动的方向也可以由随机值得到。每一个彩色小球在动画存活时间内不断地向一开始随机得到的移动方向移动,同时透明度减少。
- 星星特效:鼠标经过的地方显示一串坠落的星星。每颗星星设定存活时间,存活时间内不停地变小即可。
| 文件名 | 说明 |
|---|---|
| mouse_follow_effct.exe | 软件的可执行程序 |
| 功能说明.pdf | 功能说明的pdf版 |
| 功能说明.md | 功能说明的markdown文档 |
| 演示图片.gif | 软件演示动图 |
工程代码文件夹中:
| 文件名 | 说明 |
|---|---|
| main.cpp | 主程序代码 |
| widget.h | 软件的主界面头文件,声明了用到的变量,重载了需要的event |
| widget.cpp | 软件的实现,画一个大的绘图区,组合各个特效组件 |
| drop.h | Drop类的头文件,继承了QWidget,结合QVariantAnimation类,实现水滴动画效果 |
| drop.cpp | Drop类的实现 |
| spray.h | Spray类的头文件,由于主要的功能一致,继承了Drop类,重载了重要的函数 |
| spray.cpp | Spray类的实现 |
| colorball.h | ColorBall类的头文件 |
| colorball.cpp | ColorBall类的实现 |
| star.h | Star类的头文件 |
| star.cpp | Star类的实现 |
| untitled.pro | QtCreator的项目文件 |
| untitled.pro.user | QtCreator的项目文件 |
| rat.ico | 可执行程序文件的图标 |
| rat.png | 程序的图标 |
| resource.qrc | Qt的资源文件 |