Копирование прозрачного изображения .PNG на экран

Привет, у меня есть изображение с черным прямоугольником, нарисованным на нем, и его фон прозрачный. Этот файл сохраняется в формате png ( clear.png ). Затем у меня есть другое изображение, представляющее собой сплошной красный фон, сохраненный в формате jpeg ( background.jpeg ). Я пытался сделать так, чтобы черный прямоугольник в clear.png отображался поверх сплошного красного фонового изображения.

Это то, что я сделал ..

/*Transparent image*/
#include "SDL/SDL.h"
#include "SDL/SDL_image.h"
#include <iostream>
using namespace std;
int main(int argc,char *argv[]){
    SDL_Surface *screen = NULL;
    SDL_Surface *background = NULL;
    SDL_Surface *transparentimage = NULL;

    if ( SDL_Init(SDL_INIT_EVERYTHING) == -1){
        cout <<"could not start sdl" << endl;
    }

    screen = SDL_SetVideoMode(640,480,32,SDL_SWSURFACE);
    if ( screen == NULL){
        cout<<"could not create the screen" << endl;
    }

    background = IMG_Load("background.jpeg");
    if ( background == NULL){
        cout<<"could not load background" << endl;
    }

    transparentimage = IMG_Load("clear.png");
    if ( transparentimage == NULL){
        cout<< "could not load transparentimage" << endl;
    }

    if ( SDL_BlitSurface(background,NULL,screen,NULL) == -1 ){
        cout<<"Couldnt do background blitting " << endl;
    }
    if (SDL_BlitSurface(transparentimage,NULL,background,NULL) == -1 ){
        cout<<"could not do clear image blitting "<< endl;
    }

    SDL_Flip(screen);
    SDL_Delay(5000);

    SDL_FreeSurface(background);
    SDL_FreeSurface(transparentimage);

    SDL_Quit();

    return 0;
}

Вышеупомянутое не работает, а просто показывает мне экран с красным фоном и черным нижним колонтитулом внизу экрана (это не мой прямоугольник :) ). Что я здесь сделал не так? Также идентичны размеры изображений (640x480).

5
задан silent 13 December 2010 в 04:53
поделиться