一个最简单的sdl显示图片例子sdl example sdl 例子 例程SDL贴图bmp

2019-04-15 16:34发布

#include "SDL.h"
#include "SDL_image.h"


#define true 1
#define false 0


SDL_Surface *screen;
SDL_Surface *pic;
//SDL_Event event;
char exit_game=false;


////////////////////////////////////////////////
void InitAll()
{
//if (SDL_Init(SDL_INIT_EVERYTHING) == -1)
if (SDL_Init(SDL_INIT_VIDEO|SDL_INIT_NOPARACHUTE) == -1)
//if (SDL_Init(SDL_INIT_VIDEO)== -1)
    {


printf("Initial Failed! ");
SDL_Delay(3000);
exit(0);
    }
    //printf("SDL initialized. ");
}
////////////////////////////////////////////////³õÊŒ»¯ÓÎÏ·
int InitGame()
{
//SDL_Surface *screen;
//SDL_Surface *pic
screen = SDL_SetVideoMode(800,480,16,SDL_SWSURFACE);
//void Draw_Circle(screen,250, 120, 85,0x0000ff0);
//screen = SDL_SetVideoMode(500,400,32,SDL_SWSURFACE|SDL_DOUBLEBUF);
if(screen == NULL)
{
printf("init screen failed, please check your display card");
return false;//init screen failed
}
return 1;
}


int initImg_BMP(const char *aFileName, SDL_Surface **aImg)
{
         SDL_Surface *pTemp;
//load picture filethe file must be BMP file
         pTemp = SDL_LoadBMP(aFileName);
//format pictures’ file
         *aImg = SDL_DisplayFormat(pTemp);
if (pTemp == NULL || aImg == NULL)
         {
printf("%s cann't initial", aFileName );
return 0;
         }
         //free temporary pointer
SDL_FreeSurface(pTemp);
return 1;
}


int initImg_PNG(const char *aFileName, SDL_Surface **aImg)
{
         SDL_Surface *pTemp;
//load picture filethe file must be BMP file
         pTemp = IMG_Load(aFileName);
//format pictures’ file
         *aImg = SDL_DisplayFormat(pTemp);
if (pTemp == NULL || aImg == NULL)
         {
printf("%s cann't initial", aFileName );
return 0;
         }
         //free temporary pointer
SDL_FreeSurface(pTemp);
return 1;
}


void showImg(SDL_Surface *aSource, int aLeft , int aTop , int aWidth , int aHeight , SDL_Surface *aDestination)
{
SDL_Rect picPosition;
picPosition.x = aLeft;
picPosition.y = aTop;
picPosition.w = (aWidth == 0)? aSource-> w : aWidth;
picPosition.h = (aHeight == 0)? aSource-> h : aHeight;
SDL_BlitSurface(aSource,NULL,aDestination,&picPosition);
}


int main(int argc, char* argv[])
{
InitAll();
InitGame();
initImg_BMP("1.bmp", &pic);
showImg(pic,0,0,0,0,screen);
SDL_Flip(screen);
SDL_Delay(4000);
}