利用MFC实现动画效果

利用MFC实现动画效果

引自:http://www.cnblogs.com/Camellia/archive/2008/03/08/1096418.html

————————————————————————————

在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);
}

————————————————————————————

Good Luck!

posted @ 2011-04-19 21:02  Watson.Long  阅读(9775)  评论(0编辑  收藏  举报