Skip to content

初级软件实作的作业。用于实现鼠标跟随的特效。

Notifications You must be signed in to change notification settings

inkforest/MouseFollowEffect

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 

Repository files navigation

MouseFollowEffect

初级软件实作的作业。用于实现鼠标跟随的特效。

各个特效效果

具体的效果可以打开软件查看,另外也附了演示动图。

  • 水滴
  • 喷枪
  • 彩球
  • 星星

已测试过的运行环境

Windows 10 Version 1909 专业版

功能说明

  1. 软件由分界线分为四个区域,鼠标移动到每一个区域跟随显示的特效不同。
  2. 四个区域的顶部会分别显示各自的特效名,中间的文字会显示鼠标在软件中的区域。
  3. 确保各个特效区域之间的独立,即该区域的动画不会移动到别的区域。

开发语言&开发工具

  • 开发语言:C++
  • 开发框架:Qt 5.12.7
  • 开发工具:Qt Creator 4.11.0(Community)

思路

总体:
  1. 显示一个绘图区:背景色为白色。将这个绘图区分成4个子区域,画出分界线分割。
  2. 设定一个计时器,10毫秒到期,到期时获取用户的鼠标坐标,根据坐标判断用户所在的子区域(左上、左下、右上、右下),再显示相应区域的特效图案。
  3. 特效图案需要为一个动态图片,因此可以利用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的资源文件

About

初级软件实作的作业。用于实现鼠标跟随的特效。

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors