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

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

  • 相关阅读:
    2019沈阳网路赛 D. Fish eating fruit (点分治)
    2019南京网路赛 A.The beautiful values of the palace (主席树)
    洛谷 P2634 [国家集训队]聪聪可可(点分治)
    AcWing252 树 (点分治模板题)
    点分治模板 (洛谷 P3806)
    2020牛客寒假算法基础集训营2 J-求函数(线段树维护矩阵乘法)
    七夕祭(贪心+中位数)
    数据结构-集合
    数据结构-广义表
    数据结构-稀疏矩阵
  • 原文地址:https://www.cnblogs.com/batman425/p/3227517.html
Copyright © 2011-2022 走看看