SDL教程2——在屏幕上显示一幅图像

通过前一节,我们已经配置好了SDL相关的环境设置,这一节,我们学习如何在屏幕上显示一幅图像。

首先,我们得准备一幅32位的BMP图像,在此,我们取名叫hello.BMP,我们的编译平台仍为VS2010。

1、加载头文件

//加载头文件
#include "SDL.h"

2、新建两个SDL_Surface指针,一个SDL_Surface就是一幅图像。在这个程序中,我们将要处理两幅图像,hello就是我们待会将要加载和显示的图像,screen就是我们在屏幕上看到的图像。

不管什么时候都要记住初始化指针变量。

int main(int argc,char *argv[])
{
    //Two Images
    SDL_Surface* hello = NULL;
    SDL_Surface* screen = NULL;

3、接下来,我们需要初始化SDL,设置图像屏幕显示,加载图片。

    //Start SDL
    SDL_Init(SDL_INIT_EVERYTHING);
    
    //Set up Screen
    screen = SDL_SetVideoMode(640,480,32,SDL_SWSURFACE);
    
    //Load Image
    hello = SDL_LoadBMP("hello.bmp");

函数SDL_Init初始化所有SDL子系统,因此我们可以使用SDL绘图功能。

函数SDL_SetVideoMode设置一个640像素宽,480像素高的窗口,每个像素占32位。最后一个参数SDL_SWSURFACE设置在软件内存中的面。函数返回一个图像指针,我们可以利用它。

函数SDL_LoadBMP往hello图像中加载了一幅位图,名字叫hello.BMP,我们将位图默认放在和exe文件同目录下。

4、接下来,我们需要将加载好的图像显示到屏幕上去,函数SDL_BlitSurface实现此功能,第一个参数为源平面,第三个参数为目的平面,也就是屏幕显示平面,其他参数以后介绍。

接着函数SDL_Flip为我们更新屏幕显示,否则我们只能看到漆黑一片。

调用函数SDL_Delay,让画面在屏幕上延时停留一会,单位为毫秒。

    //Apply Image to screen
    SDL_BlitSurface(hello,NULL,screen,NULL);
    
    //Update Screen
    SDL_Flip(screen);
    
    //Pause
    SDL_Delay(20000);

5、释放刚才新建图像,关闭SDL库,退出程序。

    //Free the loaded image
    SDL_FreeSurface(hello);
 
    //Quit SDL
    SDL_Quit();
    
    return 0;
}

注意,SDL_Quit已经帮我们释放掉screen图像,不需要我们自己释放。

完整代码如下:

#include "SDL.h"
int main(int argc,char *argv[])
{
    //Two Images
    SDL_Surface* hello = NULL;
    SDL_Surface* screen = NULL;
 
    //Start SDL
    SDL_Init(SDL_INIT_EVERYTHING);
    
    //Set up Screen
    screen = SDL_SetVideoMode(640,480,32,SDL_SWSURFACE);
    
    //Load Image
    hello = SDL_LoadBMP("hello.bmp");
    
    //Apply Image to screen
    SDL_BlitSurface(hello,NULL,screen,NULL);
    
    //Update Screen
    SDL_Flip(screen);
    
    //Pause
    SDL_Delay(20000);
 
    //Free the loaded image
    SDL_FreeSurface(hello);
 
    //Quit SDL
    SDL_Quit();
    
    return 0;
}
posted @ 2013-02-20 19:38  阿Q程序员  阅读(2128)  评论(0编辑  收藏  举报