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

#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!\n");
SDL_Delay(3000);
exit(0);
    }
    //printf("SDL initialized.\n");
}
³õÊŒ»¯ÓÎÏ·
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);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mynameislinduan

你的鼓励是我最大动力写博客不易

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值