紧接上一章我们说的显示文字,这一节我们在探讨下怎样在SDL_Surface上显示一张图片 废话就不多说了...直接切入正题..在这个步骤中我们要用到的基本函数有 SDL_Surface * SDLCALL IMG_Load(const char *file); 函数参数为图片文件名, 细心地人一定会问一个问题,怎么这个图片也是一个SDL_Sruface*呀,没错,就是一个SDL_Sruface* 我们在我们自己的屏幕上显示出来图片就是将这张图片贴在我们自己的屏幕上,其实到现在大家应该可以理解 电影的播放情况了吧..也就是每秒切换多少张图片, 那么我们的具体步骤是什么呢:? 1.初始化一个SDL_VIDEO,建立我们自己的SDL_Sruface* 2.加载图片,再次生成一个SDL_Sruface* SDL_Surface *pic = IMG_Load(const char *file); 3.将图片的SDL_Surface 贴在屏幕的 SDL_Sruface上 SDL_BlitSurface(pic,0,screen,0); 4.刷新屏幕,这个可以至少有两种不同的方法的,我就不再在这里累述了... 5.释放资源,这个一定不要忘了...切忌,编程一定要养成一个好的习惯,好的习惯是成功的一半。
#include <SDL.h> #include <SDL_gfxPrimitives.h> #include <SDL_image.h> #include <SDL_rotozoom.h> #include <SDL_ttf.h> #include <stdio.h>
int main(int argc,char *argv[]) { if(SDL_Init(SDL_INIT_VIDEO) < 0 || TTF_Init() < 0 ) { printf("Init error\n"); return -1; } SDL_Surface *screen = SDL_SetVideoMode(640,480,32,SDL_SWSURFACE); if(!screen) { printf("Init video mode error\n"); return -1; } SDL_Surface *pic = IMG_Load("sample.bmp"); if(!pic) { printf("Load bmp error\n"); return -1; } SDL_BlitSurface(pic,0,screen,0); SDL_UpdateRect(screen,0,0,0,0); SDL_FreeSurface(pic); SDL_Delay(2000); TTF_Quit(); SDL_Quit(); return 0; }
|