Hallo, ich habe ein Bild mit einem schwarzen Rechteck darauf gezeichnet, und der Hintergrund ist transparent. Diese Datei wird als PNG (clear.png
) gespeichert. Dann habe ich ein anderes Bild, das nur ein fester roter Hintergrund ist, der als jpeg (background.jpeg
) gespeichert wird. Was ich versuchte, war, dass das schwarze Rechteck in clear.png oben auf dem roten Hintergrundbild erschien.Ein transparentes PNG-Bild auf einen Bildschirm prellen
Dies ist, was ich getan habe ..
/*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;
}
Die oben funktioniert nicht und es zeigt mir nur einen Bildschirm mit einem roten Hintergrund und einem schwarzen Fußzeile am unteren Rand des Bildschirms (diese isn‘ t mein Rechteck :)). Was habe ich hier falsch gemacht? Auch die Größe der Bilder ist identisch (640x480).
Ihnen sehr danken. – silent