SDL_显示BMP图片
原创
©著作权归作者所有:来自51CTO博客作者wx59bdec579ef96的原创作品,请联系作者获取转载授权,否则将追究法律责任
说明
- 基于 SDL2.0 和 vs2017 开发 。
- 有多种方法可以显示BMP图片,本文只是一种。
SDL显示BMP流程
- 获取窗口。
- 获取窗口对应surface。
- 获取bmp对应surface。
- 将bmp的surface画在窗口的surface上。
- 更新窗口。
- 显示窗口。
示例代码
#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;
}