同学之路——在路上

专业交流

导航

利用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);

posted on 2008-03-08 13:14  Camellia  阅读(2730)  评论(1编辑  收藏  举报