Selain mengubah warna gambar berdasarkan modulasi warnanya, kita bisa juga mengubah transparansi gambar dengan SDL_SetTextureAlphaMod. Transparansi bisa bernilai dari 0 hingga 255. 0 adalah nilai untuk menjadikan gambar tidak terlihat, dan 255 akan menjadikan gambar terlihat tanpa transparansi. Nilai tersebut kita letakkan pada parameter kedua dari SDL_SetTextureAlphaMod.
- int SDL_SetTextureAlphaMod(SDL_Texture* texture, Uint8 alpha)
#include <SDL2/SDL.h>
#include <SDL2/SDL_image.h>
int main(int argc, char* args[]){
SDL_Window* window = NULL;
SDL_Event evt;
unsigned int transparansi=127;
if( SDL_Init( SDL_INIT_VIDEO ) < 0 && IMG_Init(IMG_INIT_JPG|IMG_INIT_PNG)){
printf( "Error: %s\n", SDL_GetError() );
}else{
window = SDL_CreateWindow( "SDLku", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, SDL_WINDOW_SHOWN );
if( window == NULL ){
printf( "Error : %s", SDL_GetError() );
}else{
SDL_Renderer *trender = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
SDL_Surface *tmp=IMG_Load("gambar.png");
SDL_Surface *tmp2=IMG_Load("Codelogi.png");
if(tmp && tmp2){
int panjang=tmp->w;
int tinggi=tmp->h;
SDL_Texture *bmp=SDL_CreateTextureFromSurface(trender, tmp);
SDL_FreeSurface(tmp);
SDL_Texture *bmp2=SDL_CreateTextureFromSurface(trender, tmp2);
SDL_FreeSurface(tmp2);
if(bmp && bmp2){
SDL_Rect rct;
rct.x=0;
rct.w=0;
while(evt.type!=SDL_QUIT){
while(SDL_PollEvent(&evt)){
if(evt.type==SDL_KEYDOWN){
switch(evt.key.keysym.sym){
case SDLK_q:
transparansi-=16;
if(transparansi<=0)transparansi=0;
break;
case SDLK_w:
transparansi+=16;
if(transparansi>255)transparansi=255;
break;
default:
transparansi=255;
break;
}
}
SDL_SetTextureAlphaMod(bmp, transparansi);
}
SDL_SetRenderDrawColor(trender, 0xFF, 0xFF, 0xFF, 0xFF);
SDL_RenderClear(trender);
rct.w=640;
rct.h=480;
SDL_RenderSetViewport(trender, &rct);
SDL_RenderCopy(trender, bmp2, NULL, NULL);
rct.w=panjang;
rct.h=tinggi;
SDL_RenderSetViewport(trender, &rct);
SDL_RenderCopy(trender, bmp, NULL, NULL);
SDL_RenderPresent(trender);
}
}
}
}
}
SDL_DestroyWindow( window );
SDL_Quit();
return 0;
}
Contoh di atas menggunakan event keyboard, karena itu kalau kalian ingin melihat perubahan warnanya, tekan tombol keyboard kalian. Gunakan tombol q dan w untuk mengubah transparansinya.