Ce programme montre quelques exemples d'utilisation de la transparence.
Nous rapellons que les couleurs sont codées à l'aide de 4 composantes:
- R : rouge (red),
- G : vert (green),
- B : bleu (blue),
- A : transparence (alpha),
codées chacune sur un octet, c'est à dire par un entier comprit entre 0 et 256.
La transparence joue un role lorsque une image est dessinée à l'écran ou sur une autre image. Lorsque l'on copie une image, les pixels du résultat final sont obtenus en faisant le barycentre entre le pixel de l'image source avec celui de l'image destination. Les poids des barycentres sont définis par la composante transparence ( composante alpha ) de l'image source. La transparence de l'image destination reste inchangée.
Cela nous donne les formules suivantes:
R_dest = (alpha_src/256) * R_src + (1- alpha_src/256) * R_dst
V_dest = (alpha_src/256) * V_src + (1- alpha_src/256) * V_dst
B_dest = (alpha_src/256) * B_src + (1- alpha_src/256) * B_dst
A_dest = A_dest
Ainsi, si l'a composante alpha de l'image source est à 0, alors la source disparait. Si elle à est 256, alors c'est l'image destination qui disparait.
Voici un exiemple avec les couleurs suivantes:
- couleur du pixel source : RGBA( 100,100,100,128 )
- couleur du pixel destination : RGBA( 0,10,20,30 )
- couleur finale apres copie : RGBA( 50,55,65,30 )
Comme la composante alpha est à 128, la couleur finale est donc à moitié celle de l'image source (128/256) et à moitié celle de l'image destination (1-128/256).
int main( int argc, char *argv[] ){
int width = 640, height = 480;
"advanced - 7 - transparency", "transparency", width, height
);
100, 40, "avec la composante\nalpha d'origine", 4,
);
330, 20, "sans la\ncomposante\nalpha", 4,
);
435, 20, "la composante alpha\nest remplacée par une\ncomposante uniforme", 4,
);
return 0;
}
Fichier d'entête principal incluant tous les autres fichiers entêtes de la bibliothèque MLV.
#define MLV_COLOR_GREEN
Definition: MLV_color.h:931
#define MLV_COLOR_BLACK
Definition: MLV_color.h:379
MLV_Image * MLV_load_image(const char *file_image)
Charge en mémoire une image contenue dans un fichier.
void MLV_draw_image(const MLV_Image *image, int x, int y)
Dessine une image donnée à une position donnée de la fenêtre.
void MLV_set_alpha_on_image(MLV_Alpha alpha, MLV_Image *image)
La composante alpha de l'image est remplacée par une composante alpha homogène dont la valeur est don...
struct _MLV_Image MLV_Image
Définit le type Image dans la bibliothèque MLV.
Definition: MLV_image.h:53
void MLV_free_image(MLV_Image *image)
Libère la mémoire utilisée par l'image.
@ MLV_TEXT_CENTER
Definition: MLV_text.h:45
void MLV_draw_adapted_text_box(int x, int y, const char *message, int sizeInterligne, MLV_Color borderColor, MLV_Color textColor, MLV_Color backgroundColor, MLV_Text_justification text_justification,...)
Dessine une boîte contenant du texte.
void MLV_wait_seconds(int seconds)
Le programme s'intérompt pendant un nombre de secondes.
void MLV_free_window()
Ferme la fenêtre de la bibliothèque MLV.
void MLV_create_window(const char *window_name, const char *icone_name, unsigned int width, unsigned int height)
Créé une fenêtre dont la taille, et les différents noms sont passés en paramètres.
void MLV_update_window()
Met à jour l'affichage de la fenêtre.
void MLV_clear_window(MLV_Color color)
Éfface la fenêtre et la remplace par un monochrome de la couleur donnée en paramètre.