SDL图像分割屏幕

时间:2011-03-11 11:22:49

标签: c++ sdl

尝试在屏幕上显示两个图像,每个图像占据屏幕的一半。这是我正在使用的代码:

SDL_Init(SDL_INIT_VIDEO);
SDL_Surface* pScreen = SDL_SetVideoMode(1280,720,16, SDL_FULLSCREEN );
SDL_ShowCursor(SDL_DISABLE);
//load two images
SDL_Surface* pImage1 = IMG_Load("/media/x01.JPG");
SDL_Surface* pImage2 = IMG_Load("/media/x02.JPG");

//create two rectangles for left and right of screen
SDL_Rect leftR;
SDL_Rect rightR;
leftR.x = 600;
leftR.y = 0;
leftR.w = 640;
leftR.h = 720;
rightR.x = 640;
rightR.y = 0;
rightR.w = 640;
rightR.h = 720;

//display
SDL_BlitSurface(pImage1,&leftR,pScreen,&leftR);
SDL_BlitSurface(pImage2,&rightR,pScreen,&rightR);
SDL_Flip(pScreen);

//free image surfaces
SDL_FreeSurface(pImage1);
SDL_FreeSurface(pImage2);

//wait to see what's on screen...
sleep(5);

//close SDL
SDL_Quit();

我希望用两个静态图像实现分屏效果。然而,所有这一切都是第一张图像显示在屏幕的一半上,另一张是空白的。

我试过搞乱Rect x& y并且看起来图像的位置不会改变,而是观察矩形的大小。有什么想法吗?

1 个答案:

答案 0 :(得分:6)

SDL_BlitSurface有两个矩形,一个用于源,另一个用于目的地。

矩形是第二个参数,它是要绘制的源曲面(在本例中为图像)的一部分。

目的地矩形是第四个参数,它是在目标曲面上绘制的位置。

你为两者传递相同的矩形,这可能不是你想要的。如果您只想显示整个图像,请为源矩形传递NULL。