用SDL显示一个图片(图片是MM哦)

用SDL显示一个图片(图片是MM哦)2012年03月13日 20:09:14

#include <SDL.h> 
#include <stdio.h> 
    
//显示一张妹妹的图片,嘻嘻,但愿不要打哦^.^ 

int main(int argc, char ** argv) 

   SDL_Surface * screen; //主表面 
   SDL_Surface * image; //用来放MM-----的图片信息(像素) 
   SDL_Event     event; 
    
   bool bAppRun = true; 
   //初始化SDL 
   if (SDL_Init(SDL_INIT_VIDEO) == -1) { 
      fprintf(stderr, "SDL_Init %s\n", SDL_GetError()); 
      return -1; 
   } 
    
   //初始化成功设置退出要调用的函数SDL_Quit 
   atexit(SDL_Quit); 
    
   //创建一个640X480 16-bit 模式的主表面 16位可以让MM的效果好看一点 
   screen = SDL_SetVideoMode(640, 480, 16, SDL_SWSURFACE); 
   if (screen == NULL) { 
      fprintf(stderr, "Couldn't set 640x480x8 video mode %s\n", 
         SDL_GetError()); 
      return -1; 
   } 
    
   //读取MM图片信息,并创建一个表面,并把数据填入该表面中。 
   image = SDL_LoadBMP("./mm.bmp"); //请在终端里运行该程序 
   if (image == NULL) { 
      fprintf(stderr, "Couldn't load MM, %s\n", SDL_GetError()); //遗憾你不能显示MM了,不过你可以用图片浏览程序看。 
      return -1; 
   } 
    
   //有了MM的表面了,就可以显示了。 
   //将MM的表面画在我们的主表面上 
   if (SDL_BlitSurface(image, NULL, screen, NULL) < 0) { 
      //解释一下NULL,第一个是按照image的尺寸显示,第二个是默认显示。你也可以指定大小,不过要用到SDL_Rect你可以看一看帮助。  
      fprintf(stderr, "BlitSurface error: %s\n", SDL_GetError()); //看看提示吧 
      return -1; 
   } 
    
   //好了更新显示画出MM 
   SDL_UpdateRect(screen, 0, 0, image->w, image->h); 
    
   while (bAppRun) { 
      //消息循环 
      if (SDL_PollEvent(&event)) { 
         switch (event.type) { 
            case SDL_KEYDOWN: 
               //按下任意键退出 
               bAppRun = false; 
            break; 
         } 
      } 
      //没事就画MM玩 
      SDL_UpdateRect(screen, 0, 0, image->w, image->h); 
   } 
    
   //退出了程序释放MM表面的资源 
   SDL_FreeSurface(image); 
    
   return 0; 
}





-----------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------

华丽的王氏分割线(文件夹内置mm.bmp)

-------------------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------------

makefile内容

-------------------------------------

t2: main.o 
   g++ -o t2 main.o `sdl-config --libs` 

main.o: main.cpp 
   g++ -c main.cpp `sdl-config --cflags`

-------------------------------------------------------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值