SDL2 —— 显示BMP图片

2017-1-12 Plan C SDL2

www.kurukurumi.com原创,转载请注明出处。

E-mail:hubenchang0515@outlook.com


        可以使用SDL_LoadBMP来加载BMP图片,返回一个Surface,参数为图片路径

#include <SDL_surface.h>
SDL_Surface* SDL_LoadBMP(const char* file);
//成功返回指针,失败返回NULL


        可以使用SDL_CreateTextureFromSurface来将Surface转换成Texture,参数依次为RendererSurface

#include <SDL_render.h>
SDL_Texture* SDL_CreateTextureFromSurface(SDL_Renderer renderer,
                                            SDL_Surface surface);
//成功返回指针,失败返回NULL


        可以使用SDL_FreeSurface释放一个Surface,参数为Surface。

#include <SDL_surface.h>
void SDL_FreeSurface(SDL_Surface* surface);


        下面的代码显示一张BMP图片:

/*
Author : PlanC
E-mail : hubenchang0515@outlook.com
Blog   : www.kurukurumi.com
Date   : 2016-12-12
*/

#include <SDL2/SDL.h>
#include <math.h>

int main(int argc,char* argv[])
{
    /* 初始化并创建窗口 */
    SDL_Init(SDL_INIT_EVERYTHING);
    SDL_Window* win = NULL;
    win = SDL_CreateWindow("SDL2",SDL_WINDOWPOS_CENTERED,SDL_WINDOWPOS_CENTERED,
                            640,400,SDL_WINDOW_RESIZABLE);
    /* 创建Renderer */
    SDL_Renderer* render = NULL;
    render = SDL_CreateRenderer(win,-1,SDL_RENDERER_ACCELERATED);
    /* 清空Render */
    SDL_RenderClear(render);

    
    /* 加载BMP图片 */
    SDL_Surface* surface = SDL_LoadBMP("img.bmp");
    /* 通过Surface创建Texture */
    SDL_Texture* texture = SDL_CreateTextureFromSurface(render,surface);
    /* 释放Surface */
    SDL_FreeSurface(surface);
    /* 将Texture复制到显示器 */
    SDL_RenderCopy(render,texture,NULL,NULL);
    /* 显示Render */
    SDL_RenderPresent(render);
    

    /* 等待退出 */
    SDL_Event e;
    while(1)
    {
        SDL_PollEvent(&e); 
        if(e.type == SDL_QUIT)
        {
            break;
        }
    }
    /* 销毁renderer */
    SDL_DestroyRenderer(render);
    /* 销毁窗口 */
    SDL_DestroyWindow(win);
    /* 关闭SDL子系统 */
    SDL_Quit();
    
    return 0;
}

发表评论:

Powered by emlog
鄂ICP备16003833号