QQ登录

只需一步,快速开始

398上位机VC MFC实现水波特效

[ 复制链接 ]

398上位机VC MFC实现水波特效

398上位机VC MFC实现水波特效

实现水波特效
功能展示
经常在一些小界面的程序看到水波等特效,鼠标划过窗口,或在窗口上点击都会产生水面涟漪效果,我们当前例程也通过VC代码编辑实现这一功能,效果如图,程序运行就可用鼠标在窗口上点击或划动欣赏涟漪效果,水波的半径和高度可以在鼠标消息中进行更改如DropStone(point.x, point.y, 1, 256); 1为半径,256为高度

要点提示
例程封装一个简单的类CRipple实现水波功能,在例程中实现两种水波效果,例程仅演示一种,另一种可更改类中的函数WaveRender()实现,在函数中有下面相关代码
//**/特效1
iPosX = x + (m_pWaveBuf1[lineIndex - 1] - m_pWaveBuf1[lineIndex + 1]);
iPosY = y + (m_pWaveBuf1[lineIndex - m_iBmpWidth] - m_pWaveBuf1[lineIndex + m_iBmpWidth]);
/*特效2
short waveData = (1024 - m_pWaveBuf1[lineIndex]);
iPosX = (x - m_iBmpWidth/2)*waveData/1024 + m_iBmpWidth/2;
iPosY = (y - m_iBmpHeight/2)*waveData/1024 + m_iBmpHeight/2;
*/
进行特效1与2的替换就可;

实现功能
1.新建基于对话框的应用程序
2.准备一位图或复制例程中的位图1.bmp到工程目录并载入工程,位图ID改为IDB_RIPPLE。复制例程根目录水波类Cripple的两文件CRipple.cpp,CRipple.h到自己工程根目录并载入到工程中;
3.在主对话框添加头文件#include “CRipple.h”及变量CRipple g_Ripple;初始化变量
HBITMAP hBt;
BITMAP BTTop;
hBt=LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_RIPPLE));;
GetObject(hBt, sizeof(BTTop), &BTTop);
::SetWindowPos(m_hWnd, HWND_TOPMOST, 0, 0,BTTop.bmWidth,BTTop.bmHeight,SWP_NOMOVE); //设置窗口大小
m_Ripple.InitRipple(m_hWnd, 10, hBt);//初始化水波参数
4.分别在主对话框类添加鼠标点击及移动函数,调用水波类的水波产生函数
void CGkbc8Dlg::OnLButtonDown(UINT nFlags, CPoint point)
{
m_Ripple.DropStone(point.x, point.y, 10, 128);
CDialog::OnLButtonDown(nFlags, point);
}

void CGkbc8Dlg::OnMouseMove(UINT nFlags, CPoint point)
{
m_Ripple.DropStone(point.x, point.y, 2, 128);
CDialog::OnMouseMove(nFlags, point);
}

我们来演示下功能实现的整个过程
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:398.上位机VC MFC实现水波特效.zip 
文件大小:278.83 KB  售价:20金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

  

如果您认可,可联系功能定制!

  

如果您着急,充值会员可直接联系发您资料!

  

QQ联系我

微信扫扫联系我

  

  

您的支持是我们创作的动力!  

  

您可花点闲钱积分自助任意充值

  

成为VIP会员 全站资源任意下载永久更新!




回复

使用道具 举报

快速回复 返回列表 客服中心 搜索