在软件开发过程中,视觉特效可以极大地提升用户体验。本文将介绍如何将dswigger的视觉特效集成到MFC项目中,并展示如何使用CCoolFXStatic类来实现动态效果。
几天前,偶然发现了dswigger编写的一个令人惊叹的视觉特效。被深深吸引,但当尝试将其集成到程序的“关于”框中时,发现这并不简单——需要执行许多手动步骤才能显示效果。这并不方便,认为这段代码太酷了,不能不便于重用,因此决定为它编写一个MFC类包装器,以便只需一行代码更改,就可以将静态图片变成酷效果图片。
要使用CCoolFXStatic类,请按照以下步骤操作:
从CoolFXStatic_src.zip中提取所有文件,并将它们复制到MFC项目目录中,并将它们添加到项目中。
在想要使用CCoolFXStatic和/或CRandomFXStatic的源文件中添加以下包含语句。
#include "CoolFXStatic.h"
#include "RandomFXStatic.h" // 当也想使用CRandomFXStatic时。
对于想要应用Cool FX效果的资源编辑器窗口中的图片控件,使用类向导声明一个控件类型变量,并将类从CStatic更改为CCoolFXStatic或CRandomFXStatic。使用哪个类取决于想要看到哪种类型的动画:
CCoolFXStatic默认显示水效果,但可以稍后自定义动画和参数(见下文)。CRandomFXStatic最适合如果只是想挑选一个随机的引人注目的效果。
完成了,构建应用程序并看到Cool FX在行动中。
还可以在运行时创建CCoolFXStatic(尽管实在想不出需要在运行时创建的条件);以下代码片段显示了如何操作:
m_stcCodeprojectRuntime.Create(_T(""), WS_CHILD | WS_VISIBLE, ctrlRect, this);
m_bmpCodeprojectRuntime.LoadBitmap(IDB_CODEPROJECT_HIGH_COLOR);
m_stcCodeprojectRuntime.SetBitmap(m_bmpCodeprojectRuntime);
所需要做的就是使用Create()函数创建控件,然后使用SetBitmap()函数设置位图。SetBitmap()函数在CCoolFXStatic中被重载,并将执行FX初始化。
可以通过更改以下成员变量来自定义CCoolFXStatic中的水动画:
int mouseMoveBlobRadius;
int mouseMoveBlobHeight;
int mouseClickBlobRadius;
int mouseClickBlobHeight;
// 下面参数控制水FX的“雨滴”数量(只是一些随机生成的斑点),它越小("1"是可能的最小值),越有可能生成更多的“雨滴”。
int intervalsPerRaindrop;
SetFireAlpha() 和 SetPlasmaAlpha() 分别用于更改火和等离子体FX的透明度。
CRandomFXStatic是CCoolFXStatic的派生类,只是帮助决定展示哪种动画。