5 Stimmen

Ein transparentes PNG-Bild auf einem Bildschirm ausblenden

Hallo, ich habe ein Bild mit einem schwarzen Rechteck darauf gezeichnet, und sein Hintergrund ist transparent. Diese Datei ist als png gespeichert ( clear.png ). Dann habe ich ein anderes Bild, das nur einen einfarbigen roten Hintergrund hat, als jpeg gespeichert ( background.jpeg ). Ich wollte erreichen, dass das schwarze Rechteck in clear.png auf dem einfarbigen roten Hintergrundbild angezeigt wird.

Das habe ich getan

/*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;
}

Das obige funktioniert nicht und zeigt mir nur einen Bildschirm mit einem roten Hintergrund und einer schwarzen Fußzeile am unteren Rand des Bildschirms (das ist nicht mein Rechteck :)). Was habe ich hier falsch gemacht? Auch die Größe der Bilder ist identisch (640x480).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X