zoukankan      html  css  js  c++  java
  • 加载图片的问题

    没有接触过游戏开发的我,当准备开始学习游戏开发的时候,总觉得游戏开发是神秘的,需要很牛的技术才能实现。

    以前做过很多应用程序,基本上都是拖动控件,用很少的代码就能实现。

    比如加载图片,用pascal的话只需要在你放置图片的地方,放一个image控件即可,不需要写一行代码,还可以根据属性设置设置不同的效果。

    由于是第一次玩这么高深的东西(自己感觉)。很简单的一个问题,被我想复杂化了。

    加载游戏场景和人物(其实就是两张图片---------哈哈)

    源码:

    声明全局变量

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

    int  p;

    BOOL loadbmp(CString cc);

    BOOL loadbmp(CString cc)

       DeleteObject(bit); 
        bit=(HBITMAP)LoadImage 
          (AfxGetInstanceHandle(),
               cc,
               IMAGE_BITMAP, 
               0, 
               0, 
               LR_LOADFROMFILE|LR_CREATEDIBSECTION
           );

    其实以上部分已经把图片加载到bit,下面的部分是获取图片的信息,高度和宽度
         if(bit==NULL) return FALSE; 
         DIBSECTION ds;
         BITMAPINFOHEADER &bm = ds.dsBmih;
         GetObject(bit,sizeof(ds),&ds); 
         w = bm.biWidth; 
         h = bm.biHeight;
         return TRUE;
    }

    显示图片的功能

    CClientDC dc(this);//这里告诉图片 你将要显示到客户区 下面要用到
       CString cc;
     p=0;
     MemDC = CreateCompatibleDC(0);//暂存设备场景
     dir="图片/";

     //加载地图
     cc=dir+"地面.BMP";
     if(loadbmp(cc)==FALSE)
       AfxMessageBox(cc+"没找到!");
     SelectObject(MemDC,bit);  建立关联,不然如何让图片显示呢
     BitBlt(dc.m_hDC,0,0,300,300,MemDC,0,0,SRCCOPY);//就理解它为让内存中的图片显示到客户区吧

     //加载人
     cc.Format("%s人/c%05d.bmp",dir,p);
     if(loadbmp(cc)==FALSE)
      AfxMessageBox(cc+"没找到!");
     SelectObject(MemDC,bit);
     BitBlt(dc.m_hDC,200,200,w,h,MemDC,0,0,SRCCOPY);

    上面就实现了一个非常简单游戏场景加载,虽然什么实质内容也没有。

  • 相关阅读:
    Java程序员:一整个项目的具体开发流程介绍
    JAVA常用API整理
    Java开发人员必知必会的20种常用类库和API
    SpringBoot_web开发【实验】-员工列表-链接高亮&列表完成
    luogu P1754 球迷购票问题 |动态规划
    luogu P1566 加等式 |背包问题方案数
    luogu P1564 膜拜 |动态规划
    luogu P1509 找啊找啊找GF |背包
    P1474 货币系统 Money Systems |背包方案数
    cloudera安装报错 socket.gaierror: [Errno -2] Name or service not known
  • 原文地址:https://www.cnblogs.com/batman425/p/3227517.html
Copyright © 2011-2022 走看看