zoukankan      html  css  js  c++  java
  • 让人物在地图上动起来

    其实很简单,在原来添加地图的基础上,添加一个定时器,每间隔一定时间加载一个行动的图片

    HBITMAP bit; 
    HDC  MemDC; 
    int  w,h;
    CString dir;
    CString cc;

    int  p;
    char appdir[256];

    int m0; //用于初始化人物为0
    int m1;//图片数量的最大值

    BOOL getpic(CString cc,int p);
    BOOL loadbmp(CString cc);

    加载不同图片

    BOOL getpic(CString cc,int p)
    {
     cc.Format("%s\图片\人\c%05d.bmp",dir,p);
     loadbmp(cc);
     return TRUE;
    }

    添加定时器

    void ClearnDlg::OnTimer(UINT nIDEvent)
    {
     //添加一个定时器其实用处很简单 不定的加载不同的图片在同一个地方
     CClientDC dc(this);
     if(getpic("人",p)==FALSE)
      AfxMessageBox(cc+"没找到!");
     SelectObject(MemDC,bit);
     BitBlt(dc.m_hDC,200,160,w,h,MemDC,0,0,SRCCOPY);
     p++;
     if(p>m1) p=m0;
     CDialog::OnTimer(nIDEvent);
    }

    void ClearnDlg::OnBnClickedOk()
    {
     CClientDC dc(this);
     p=400;
     m0=400;
     m1=799;

     MemDC = CreateCompatibleDC(0);//暂存设备场景

     GetCurrentDirectory(256,appdir);
     dir=appdir;

     //加载地图
        cc=dir+"\图片\地面.bmp";
     if(loadbmp(cc)==FALSE)
       AfxMessageBox(cc+"没找到!");
     SelectObject(MemDC,bit);
     SetBkMode(MemDC,TRANSPARENT);
     BitBlt(dc.m_hDC,0,0,400,300,MemDC,0,0,SRCCOPY);

     SetTimer(1,150,NULL);
    }

    void ClearnDlg::OnBnClickedCancel()
    {
     // TODO: 在此添加控件通知处理程序代码
     DeleteDC(MemDC);
     DeleteObject(bit);
     OnCancel();
    }

    问题来了,原来加载的图片是否在内存中消失????????????????????????????

  • 相关阅读:
    codevs 3115 高精度练习之减法 swap
    codevs 3116 高精度练习之加法
    poj 3984 迷宫问题
    codevs m进制转化成10进制
    codevs 1214 线段覆盖
    codevs 3143 二叉树的序遍历
    codevs 3145 汉诺塔
    HDU 5093 Battle ships [二分图匹配]
    HDU 5074 Hatsune Miku [dp] ——2014鞍山现场赛E题
    ZOJ 3793 First Digit (逗比题)
  • 原文地址:https://www.cnblogs.com/batman425/p/3227784.html
Copyright © 2011-2022 走看看