说明

  1. 基于 SDL2.0 和 vs2017 开发 。
  2. 有多种方法可以显示BMP图片,本文只是一种。

SDL显示BMP流程

  1. 获取窗口。
  2. 获取窗口对应surface。
  3. 获取bmp对应surface。
  4. 将bmp的surface画在窗口的surface上。
  5. 更新窗口。
  6. 显示窗口。

示例代码

#include "stdafx.h"

#include "SDL.h"
#include "SDL_version.h"


#define IMG_PATH "D:\\11.bmp"
#undef main //SDL 中定义了main,所以这里去掉,不然会执行错误!

int main(int argc,char **argv)
{
printf("\n");

printf("Hello SDL\n");

SDL_version compiled;
SDL_VERSION(&compiled);

printf("SDL version %d.%d.%d ...\n",compiled.major, compiled.minor, compiled.patch);

if (SDL_Init(SDL_INIT_VIDEO) < 0)
return 1;

SDL_Window *window;
SDL_Surface *surface;
SDL_Surface *surfaceBMP;

//获取窗口指针,未指定位置信息,宽高为800x600
window = SDL_CreateWindow("SDL_bmp_title",SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED,800,600,0);
surface = SDL_GetWindowSurface(window);

surfaceBMP = SDL_LoadBMP(IMG_PATH);

//将bmp的surface画到surface上。
SDL_BlitSurface(surfaceBMP,NULL,surface,NULL);

//更新窗口并显示
SDL_UpdateWindowSurface(window);
SDL_ShowWindow(window);

SDL_Delay(5000);

SDL_FreeSurface(surfaceBMP);
SDL_FreeSurface(surface);
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}