利用MFC实现动画效果
以下只是本人初学MFC时的想法,如有不当请改正;
在View类的添加一个定时器,Oncreate函数中添加
UINT SetTimer( UINT nIDEvent, UINT nElapse, void (CALLBACK EXPORT* lpfnTimer)(HWND, UINT, UINT, DWORD) );
第一个参数为定时器标识符,第二个参数是时间,单位为微秒,第三个参数可以设置为空,所以实例如下:
SetTimer(1,100,NULL;)
这个代码实现的所谓的动画就是覆盖掉上一张图像,再新画一张,看起来似乎是动的。
代码如下:
void C动画测试View::OnTimer(UINT_PTR nIDEvent)
{
CBitmap test_Bitmap;
CDC test_MemDc; //建立一个缓存设备上下文
CDC *test_cDc=GetDC(); //取得设备上下文
test_Bitmap.LoadBitmap( IDB_TEST); /*位图文件路径IDR_MAINFRAME*/
test_MemDc.CreateCompatibleDC(test_cDc);
//选择位图
test_MemDc.SelectObject(&test_Bitmap);
//画在屏幕上
test_cDc->BitBlt(DRAWX,DRAWY, //左上角坐标
PICWIDTH,PICHEIGHT, //显示的宽和高
&test_MemDc, //从缓存中获取
picx, picy, //从源位图的(0,0)坐标开始显示
SRCCOPY ); //将源位图拷贝至屏幕
ReleaseDC(test_cDc);
test_MemDc.DeleteDC();//释放内存
picx+=PICWIDTH;
if (picx >= 704)
picx=0;
CView::OnTimer(nIDEvent);
}