303/10/Monday 21h34
Apprenez à programmer en C / C++ ! - Le Site du Zéro
Page 241 sur 377
http://www.siteduzero.com/tuto-29-8-0-apprenez-a-programmer-en-c-c.html
Et le pire c'est qu'il suffit de quelques petites boucles pour y arriver 
Pour faire ça, on va devoir créer 256 surfaces (256 lignes) ayant les composantes rouge-vert-bleu suivantes : 
Code : Autre
(0, 0, 0) // Noir 
(1, 1, 1) // Gris très très proche du noir 
(2, 2, 2) // Gris très proche du noir 
... 
(128, 128, 128) // Gris moyen (à 50%) 
... 
(253, 253, 253) // Gris très proche du blanc 
(254, 254, 254) // Gris très très proche du blanc 
(255, 255, 255) // Blanc 
Tout le monde devrait avoir vu venir une boucle pour faire ça (on va pas faire 256 copier/collers, faut pas abuser ! 
Vous allez devoir créer un tableau de type SDL_Surface* de 256 cases pour stocker chacune des lignes. 
Allez au boulot, z'avez 5 minutes montre en main ! 
Correction !
Alors, facile ou facile ? 
D'abord, il fallait créer notre tableau de 256 SDL_Surface*. On l'initialise à NULL : 
Code : C
SDL_Surface *lignes[256] = {NULL};
On crée aussi une variable i dont on aura besoin pour nos for. 
On change aussi la hauteur de la fenêtre pour qu'elle soit plus adaptée dans notre cas. On lui donne donc 256 pixels de hauteur (pour
chacune des 256 lignes à afficher). 
Ensuite, on fait un for pour allouer une à une chacune des 256 surfaces. Le tableau recevra 256 pointeurs vers chacune des surfaces
créées : 
Code : C
for (i = 0 ; i <= 255 ; i++)
lignes[i] = SDL_CreateRGBSurface(SDL_HWSURFACE, 640, 1320000)// Allocation
des 256 surfaces 
Ensuite, on remplit et on blitte chacune de ces surfaces une par une. 
Code : C
for (i = 0 ; i <= 255 ; i++)
{
position.x = 0// Les lignes sont à gauche (abscisse de 0)
position.y = i; // La position verticale dépend du numéro de la ligne actuelle
SDL_FillRect(lignes[i], NULL, SDL_MapRGB(ecran->format, i, i, i))// Remplissage
SDL_BlitSurface(lignes[i], NULL, ecran, &position)// Collage
}
Notez que j'utilise la même variable position tout le temps. Pas besoin d'en créer 256 en effet, car la variable ne sert que pour être
envoyée à SDL_BlitSurface. On peut donc la réutiliser sans problème. 
A chaque fois, je mets à jour l'ordonnée (y) pour blitter la ligne à la bonne hauteur. La couleur à chaque passage dans la boucle dépend
de i (ce sera 0, 0, 0 la première fois, et 255, 255, 255 la dernière fois). 
Pdf image extractor online - Select, copy, paste PDF images in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support PDF Image Extraction from a Page, a Region on a Page, and PDF Document
online pdf image extractor; how to extract images from pdf files
Pdf image extractor online - VB.NET PDF Image Extract Library: Select, copy, paste PDF images in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support PDF Image Extraction from a Page, a Region on a Page, and PDF Document
extract image from pdf; pdf image extractor online
303/10/Monday 21h34
Apprenez à programmer en C / C++ ! - Le Site du Zéro
Page 242 sur 377
http://www.siteduzero.com/tuto-29-8-0-apprenez-a-programmer-en-c-c.html
Mais pourquoi x est toujours à 0 ? 
Comment se fait-il que toute la ligne soit remplie si x est tout le temps à 0 ?
Notre variable position indique à quel endroit est placé le coin en haut à gauche de notre surface (ici notre ligne). Elle n'indique pas la
largeur de la surface, 
juste sa position sur l'écran. 
Comme toutes nos lignes commencent à gauche de la fenêtre (le plus à gauche possible), on met une abscisse de 0. Essayez de mettre
une abscisse de 50 pour voir ce que ça fait : toutes les lignes seront décalées vers la droite. 
Comme la surface fait 640 pixels de largeur, la SDL dessine 640 pixels vers la droite (de la même couleur) en partant des coordonnées
indiquées dans la variable position. 
Sur ce schéma je vous montre les coordonnées du point en haut à gauche de l'écran (position de la première ligne) et celui du point en
bas à droite de l'écran (position de la dernière ligne) : 
Comme vous le voyez, de haut en bas l'abscisse ne change pas (x reste égal à 0 tout le long). 
C'est seulement y qui change pour chaque nouvelle ligne, d'où le position.y = i; 
Enfin, il ne faut pas oublier de libérer la mémoire pour chacune des 256 surfaces créées, le tout à l'aide d'une petite boucle bien
entendu 
Code : C
for (i = 0 ; i <= 255 ; i++) // N'oubliez pas de libérer chacune des 256 surfaces !
SDL_FreeSurface(lignes[i]);
Résumé du main 
Voici donc la fonction main au complet : 
Code : C
int main(int argc, char *argv[])
{
SDL_Surface *ecran = NULL, *lignes[256] = {NULL};
SDL_Rect position;
int i = 0;
SDL_Init(SDL_INIT_VIDEO);
ecran = SDL_SetVideoMode(640, 256, 32, SDL_HWSURFACE); // Hauteur de 256 pixels
for (i = 0 ; i <= 255 ; i++)
lignes[i] = SDL_CreateRGBSurface(SDL_HWSURFACE, 6401320000)//
Allocation des 256 surfaces
SDL_WM_SetCaption("Mon dégradé en SDL !", NULL);
SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 0, 0, 0));
VB.NET TIFF: TIFF Text Extractor SDK; Extract Text Content from
In this online tutorial, we will offer you information on Standalone VB.NET TIFF text extractor SDK that extracts control SDK into VB.NET image application by
extract color image from pdf in c#; extract jpg pdf
VB.NET PowerPoint: Extract & Collect PPT Slide(s) Using VB Sample
demo code using RasterEdge VB.NET PowerPoint extractor library toolkit. provide powerful & profession imaging controls, PDF document, image to pdf files and
how to extract pictures from pdf files; how to extract a picture from a pdf
303/10/Monday 21h34
Apprenez à programmer en C / C++ ! - Le Site du Zéro
Page 243 sur 377
http://www.siteduzero.com/tuto-29-8-0-apprenez-a-programmer-en-c-c.html
for (i = 0 ; i <= 255 ; i++)
{
position.x = 0// Les lignes sont à gauche (abscisse de 0)
position.y = i; // La position verticale dépend du numéro de la ligne actuelle
SDL_FillRect(lignes[i], NULL, SDL_MapRGB(ecran->format, i, i, i))// Remplissage
SDL_BlitSurface(lignes[i], NULL, ecran, &position)// Collage
}
SDL_Flip(ecran);
pause();
for (i = 0 ; i <= 255 ; i++) // N'oubliez pas de libérer chacune des 256 surfaces !
SDL_FreeSurface(lignes[i]);
SDL_Quit();
return EXIT_SUCCESS;
}
Je veux des exercices pour m'entraîner !
Pas de problème, je suis un véritable générateur d'exercices ambulant 
Créez le dégradé inverse, du blanc au noir. Il vous faudra peut-être réfléchir 10 secondes avant de trouver comment faire 
Vous pouvez aussi faire un double dégradé, en allant du noir au blanc comme on a fait ici puis du blanc au noir (la fenêtre fera
alors le double de hauteur).
Guère plus difficile, vous pouvez aussi vous entraîner à faire un dégradé horizontal au lieu d'un dégradé vertical
Faites des dégradés en utilisant d'autres couleurs que le blanc et le noir. Essayez pour commencer du rouge au noir, du vert au
noir et du bleu au noir, puis du rouge au blanc etc... 
Essayez de faire un dégradé pour d'autres couleurs allant du rouge au vert par exemple, ou encore du jaune au vert foncé etc. 
Ci-dessous un dégradé du rouge au vert : 
Ca a un petit côté rasta, vous trouvez pas ? 
Comme vous le voyez, notre travail ne consiste qu'à appeler les fonctions de la SDL. 
Ce n'est pas bien difficile, il faut juste pratiquer et essayer de retenir le nom des principales fonctions et surtout l'ordre dans lequel on
les appelle. 
Alors ça vous plaît ? 
Ohla ohla, mais c'est que le début en plus 
Afficher des images
VB.NET Word: Extract Word Pages, DOCX Page Extraction SDK
this VB.NET Word page extractor add-on can be also used to merge / split Word file, add / delete Word page, sort Word page order or insert image into Word page
how to extract images from pdf in acrobat; extract photos from pdf
VB.NET TIFF: TIFF to Text (TXT) Converter SDK; Convert TIFF to
NET developers to interpret and decode TIFF image file. But different from TIFF text extractor add-on powerful & profession imaging controls, PDF document, tiff
extract images from pdf acrobat; pdf image extractor c#
303/10/Monday 21h34
Apprenez à programmer en C / C++ ! - Le Site du Zéro
Page 244 sur 377
http://www.siteduzero.com/tuto-29-8-0-apprenez-a-programmer-en-c-c.html
Dans notre premier chapitre de "vraie" pratique de la SDL, nous avons appris à charger la SDL, ouvrir une fenêtre et gérer les surfaces. 
Or, pour le moment nous n'avons appris qu'à créer des surfaces unies, c'est-à-dire ayant la même couleur. Les surfaces unies ça va un
moment, mais ce serait délicat de faire un jeu avec juste des carrés de couleur 
Dans ce chapitre, nous allons justement apprendre à charger des images dans des surfaces, que ce soit des BMP, des PNG, des GIF, des
JPG ou que sais-je encore 
Charger une image BMP
Allons bon 
Pourquoi est-ce qu'on ne va apprendre qu'à charger des images BMP ici ?
En fait, la SDL est une librairie très simple. Elle ne propose à la base que le chargement d'images de type Bitmap (extension ".bmp"). Ne
paniquez pas pour autant, car grâce à une extension de la SDL (la librairie SDL_Image) nous verrons qu'il est possible de charger de
nombreux autres types. 
Pour commencer déjà, nous allons nous contenter de ce que la SDL offre à la base. Nous allons donc étudier le chargement de BMP. 
Le format BMP
Un BMP (abréviation de Bitmap) est un format d'image. 
Les images que vous voyez sur votre ordinateur sont stockées dans des fichiers. Il existe plusieurs formats d'images, c'est-à-dire plusieurs
façons de coder l'image dans un fichier. Selon le format, l'image prend plus ou moins d'espace disque et est de plus ou moins bonne
qualité. 
Le Bitmap est un format non compressé (contrairement aux JPG, PNG, GIF etc.) 
Concrètement, cela signifie les choses suivantes : 
Le fichier est très rapide à lire, contrairement aux formats compressés doivent être décompressés, ce qui leur prend un peu plus
de temps.
La qualité de l'image est parfaite. Certains formats compressés comme le JPG détériorent la qualité de l'image, ce n'est pas le cas
du BMP.
Mais le fichier est aussi bien plus gros puisqu'il n'est pas compressé !
Bref, il y a des avantages et des défauts. 
Pour la SDL, l'avantage c'est que ce type de fichier est simple et rapide à lire. Si vous avez souvent besoin de charger des images au
cours de l'exécution de votre programme, il vaut mieux utiliser des BMP : certes le fichier est plus gros, mais il se chargera plus vite
qu'un GIF par exemple. 
Charger un bitmap
Téléchargement du pack d'images 
Nous allons travailler avec plusieurs images dans ce chapitre. Si vous voulez faire les tests en même temps que vous lisez (et vous
devriez !), je vous recommande fortement de télécharger ce pack qui contient toutes les images dont on va avoir besoin : 
Télécharger le pack d'images (1 Mo)
Placez toutes les images 
dans le dossier de votre projet. 
Nous allons commencer par travailler avec le fichier lac_en_montagne.bmp. C'est une scène 3D d'exemple livrée avec le logiciel de
modélisation Vue d'Esprit (c'était à l'époque où j'espérais me découvrir un talent artistique, mais ça fait belle lurette que j'ai abandonné 
Charger l'image dans une surface 
Nous allons utiliser une fonction qui va charger l'image BMP et la mettre dans une surface. 
C# Word: How to Extract Text from C# Word in .NET Project
you can rest assured because this Word text extractor preserves both to provide powerful & profession imaging controls, PDF document, image to pdf files and
extract images from pdf; extract image from pdf online
303/10/Monday 21h34
Apprenez à programmer en C / C++ ! - Le Site du Zéro
Page 245 sur 377
http://www.siteduzero.com/tuto-29-8-0-apprenez-a-programmer-en-c-c.html
Cette fonction a pour nom SDL_LoadBMP. Vous allez voir c'est ridicule tellement c'est simple 
Code : C
maSurface = SDL_LoadBMP("image.bmp");
La fonction SDL_LoadBMP remplace 2 fonctions que vous connaissez : 
SDL_CreateRGBSurface : qui se chargeait d'allouer de la mémoire pour stocker une surface de la taille demandée (= malloc).
SDL_FillRect : qui remplissait la structure d'une couleur unie.
Pourquoi est-ce que ça remplace ces 2 fonctions ? C'est très simple : 
La taille à allouer en mémoire pour la surface dépend de la taille de l'image : si l'image fait une taille de 250 x 300, alors votre
surface aura une taille de 250 x 300.
D'autre part, votre surface sera remplie pixel par pixel par le contenu de votre image BMP.
Codons sans plus tarder 
Code : C
int main(int argc, char *argv[])
{
SDL_Surface *ecran = NULL, *imageDeFond = NULL;
SDL_Rect positionFond;
positionFond.x = 0;
positionFond.y = 0;
SDL_Init(SDL_INIT_VIDEO);
ecran = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE);
SDL_WM_SetCaption("Chargement d'images en SDL", NULL);
/* Chargement d'une image Bitmap dans une surface */
imageDeFond = SDL_LoadBMP("lac_en_montagne.bmp");
/* On blitte par-dessus l'écran */
SDL_BlitSurface(imageDeFond, NULL, ecran, &positionFond);
SDL_Flip(ecran);
pause();
SDL_FreeSurface(imageDeFond)/* On libère la surface */
SDL_Quit();
return EXIT_SUCCESS;
}
J'ai donc créé un pointeur vers une surface (imageDeFond) ainsi que les coordonnées correspondantes (positionFond). 
La surface est créée en mémoire et remplie par la fonction SDL_LoadBMP. 
On la blitte ensuite sur la surface ecran et c'est tout ! Admirez le résultat : 
303/10/Monday 21h34
Apprenez à programmer en C / C++ ! - Le Site du Zéro
Page 246 sur 377
http://www.siteduzero.com/tuto-29-8-0-apprenez-a-programmer-en-c-c.html
C'est aussi simple que cela 
Donner une icône à son application
Maintenant que nous savons charger des images, nous pouvons voir comment donner une icône à notre programme. L'icône sera affichée
en haut à gauche de la fenêtre (et aussi dans la barre des tâches). Pour le moment on a une icône par défaut. 
Mais, les icônes des programmes ne sont pas des .ico normalement ?
Non pas forcément ! D'ailleurs les .ico n'existent que sous Windows, sur les autres OS on n'en trouve pas ! 
La SDL réconcilie tout le monde en utilisant un truc bien à elle : une surface ! 
Eh oui, l'icône d'un programme SDL n'est rien d'autre qu'une bête surface 
Votre icône doit normalement être de taille 16x16 pixels. 
Toutefois, sous Windows il faut que l'icône soit de taille 32x32 pixels sinon elle sera déformée. Ne vous en faites pas, la SDL
"réduira" les dimensions de l'image pour qu'elle rentre dans 16x16 pixels (vous imaginez pas le temps que j'ai mis pour
comprendre ça 
)
Pour ajouter l'icône à la fenêtre, on utilise la fonction SDL_WM_SetIcon 
Cette fonction prend 2 paramètres : la surface qui contient l'image à afficher ainsi que des informations sur la transparence (NULL si on
ne veut pas de transparence). 
La gestion de la transparence d'une icône est un peu compliquée (il faut dire un à un quels sont les pixels transparents),
nous ne l'étudierons donc pas.
303/10/Monday 21h34
Apprenez à programmer en C / C++ ! - Le Site du Zéro
Page 247 sur 377
http://www.siteduzero.com/tuto-29-8-0-apprenez-a-programmer-en-c-c.html
On va combiner 2 fonctions en une : 
Code : C
SDL_WM_SetIcon(SDL_LoadBMP("sdl_icone.bmp"), NULL);
L'image est chargée en mémoire par SDL_LoadBMP et l'adresse de la surface est directement envoyée à SDL_WM_SetIcon. 
La fonction SDL_WM_SetIcon doit être appelée avant que la fenêtre ne soit ouverte, c'est-à-dire qu'elle doit se trouver
avant SDL_SetVideoMode dans votre code source.
Voici le code source complet (j'ai juste ajouté le SDL_WM_SetIcon par rapport à la dernière fois) : 
Code : C
int main(int argc, char *argv[])
{
SDL_Surface *ecran = NULL, *imageDeFond = NULL;
SDL_Rect positionFond;
positionFond.x = 0;
positionFond.y = 0;
SDL_Init(SDL_INIT_VIDEO);
/* Chargement de l'icône AVANT SDL_SetVideoMode */
SDL_WM_SetIcon(SDL_LoadBMP("sdl_icone.bmp"), NULL);
ecran = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE);
SDL_WM_SetCaption("Chargement d'images en SDL", NULL);
imageDeFond = SDL_LoadBMP("lac_en_montagne.bmp");
SDL_BlitSurface(imageDeFond, NULL, ecran, &positionFond);
SDL_Flip(ecran);
pause();
SDL_FreeSurface(imageDeFond);
SDL_Quit();
return EXIT_SUCCESS;
}
Résultat, l'icône est chargée 
Gestion de la transparence
Le problème de la transparence
Nous avons chargé une jolie image bitmap tout à l'heure dans notre fenêtre. 
Supposons que l'on veuille blitter une image par-dessus. Ca vous arrivera très fréquemment, car dans un jeu en général le personnage
que l'on déplace est un bitmap, et il se déplace sur une image de fond. 
On va blitter l'image de Zozor (la mascotte du Site du Zér0 !) sur la scène : 
Code : C
int main(int argc, char *argv[])
{
303/10/Monday 21h34
Apprenez à programmer en C / C++ ! - Le Site du Zéro
Page 248 sur 377
http://www.siteduzero.com/tuto-29-8-0-apprenez-a-programmer-en-c-c.html
SDL_Surface *ecran = NULL, *imageDeFond = NULL, *zozor = NULL;
SDL_Rect positionFond, positionZozor;
positionFond.x = 0;
positionFond.y = 0;
positionZozor.x = 500;
positionZozor.y = 260;
SDL_Init(SDL_INIT_VIDEO);
SDL_WM_SetIcon(SDL_LoadBMP("sdl_icone.bmp"), NULL);
ecran = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE);
SDL_WM_SetCaption("Chargement d'images en SDL", NULL);
imageDeFond = SDL_LoadBMP("lac_en_montagne.bmp");
SDL_BlitSurface(imageDeFond, NULL, ecran, &positionFond);
/* Chargement et blittage de zozor sur la scène */
zozor = SDL_LoadBMP("zozor.bmp");
SDL_BlitSurface(zozor, NULL, ecran, &positionZozor);
SDL_Flip(ecran);
pause();
SDL_FreeSurface(imageDeFond);
SDL_FreeSurface(zozor);
SDL_Quit();
return EXIT_SUCCESS;
}
On a juste rajouté une surface pour y stocker Zozor, que l'on blitte ensuite à un endroit sur la scène. 
Le résultat est le suivant : 
C'est moche hein ? 
303/10/Monday 21h34
Apprenez à programmer en C / C++ ! - Le Site du Zéro
Page 249 sur 377
http://www.siteduzero.com/tuto-29-8-0-apprenez-a-programmer-en-c-c.html
Bah oui, c'est parce que t'as mis un fond bleu tout moche sur l'image de Zozor !
Parce que vous croyez qu'avec un fond noir ou un fond marron derrière Zozor ça aurait été plus joli ? 
Ben non, le problème ici c'est que notre image est forcément rectangulaire, donc si on la colle sur la scène on voit son fond et ça fait
moche. 
Heureusement, la SDL gère la transparence ! 
Rendre une image transparente
Etape 1 : préparer l'image 
Pour commencer, il faut préparer l'image que vous voulez blitter sur la scène. 
Les BMP ne sont pas des images gérant la transparence, contrairement aux GIF et PNG. Il va donc falloir utiliser une astuce. 
Il faut mettre 
la même couleur de fond sur toute l'image. Celle-ci sera rendue transparente par la SDL au moment du blit. Observez à
quoi ressemble mon zozor.bmp de plus près : 
J'ai mis un fond bleu uni exprès. Notez que j'ai choisi le bleu au hasard, j'aurais très bien pu mettre un fond vert ou rouge par exemple.
Ce qui compte, c'est que cette couleur soit 
unique et unie. J'ai choisi le bleu parce qu'il n'y en avait pas dans l'image de zozor. Si j'avais
choisi le vert, j'aurais pris le risque que l'herbe que machouille Zozor (en bas à gauche de l'image) soit rendue transparente. 
A vous donc de vous débrouiller avec votre logiciel de dessin (Paint, Photoshop, chacun ses goûts 
) pour donner un fond uni à votre
image. 
Etape 2 : indiquer la couleur transparente 
Pour indiquer à la SDL quelle est la couleur qui doit être rendue transparente, vous devez utiliser la fonction SDL_SetColorKey. Cette
fonction doit être appelée avant de blitter l'image. 
Voici comment je m'en sers pour rendre le bleu derrière Zozor transparent : 
Code : C
SDL_SetColorKey(zozor, SDL_SRCCOLORKEY, SDL_MapRGB(zozor->format, 00, 255));
Il y a 3 paramètres : 
La surface qui doit être rendue transparente (ici c'est zozor)
Une liste de flags. Utilisez SDL_SRCCOLORKEY pour activer la transparence, 0 pour la désactiver.
Indiquez ensuite la couleur qui doit être rendue transparente. J'ai utilité SDL_MapRGB pour créer la couleur au format nombre
(Uint32) comme on l'a déjà fait par le passé. Comme vous le voyez, c'est le bleu pur (0, 0, 255) que je rends transparent.
En résumé, on charge d'abord l'image avec SDL_LoadBMP, on indique la couleur transparente avec SDL_SetColorKey, puis on peut blitter
avec SDL_BlitSurface : 
Code : C
/* On charge l'image : */
zozor = SDL_LoadBMP("zozor.bmp");
/* On rend le bleu derrière Zozor transparent : */
SDL_SetColorKey(zozor, SDL_SRCCOLORKEY, SDL_MapRGB(zozor->format, 00, 255));
/* On blitte l'image maintenant transparente sur le fond : */
SDL_BlitSurface(zozor, NULL, ecran, &positionZozor);
303/10/Monday 21h34
Apprenez à programmer en C / C++ ! - Le Site du Zéro
Page 250 sur 377
http://www.siteduzero.com/tuto-29-8-0-apprenez-a-programmer-en-c-c.html
Résultat, Zozor est parfaitement intégré à la scène ! 
Ca, c'est LA technique de base que vous réutiliserez tout le temps dans vos futurs programmes. Apprenez à bien manier la transparence
car c'est fondamental si on veut avoir un jeu un minimum réaliste 
La transparence Alpha
C'est un autre type de transparence. 
Jusqu'ici, on se contentait de définir UNE couleur de transparence (par exemple le bleu). Cette couleur n'apparaissait pas une fois l'image
blittée. 
La transparence Alpha c'est autre chose. Elle permet de réaliser un "mélange" entre une image et le fond. C'est une sorte de fondu. 
La transparence Alpha d'une surface peut être activée par la fonction SDL_SetAlpha : 
Code : C
SDL_SetAlpha(zozor, SDL_SRCALPHA, 128);
Il y a là encore 3 paramètres : 
La surface en question (zozor)
Une liste de flags. Mettez SDL_SRCALPHA pour activer la transparence, 0 pour la désactiver.
Très important : la valeur Alpha de la transparence. C'est un nombre compris entre 0 (image totalement transparente, donc
invisible) et 255 (image totalement opaque, comme s'il n'y avait pas de transparence alpha)
Plus le nombre Alpha est petit, plus l'image est transparente et fondue. 
Voici par exemple un code qui met une transparence alpha de 128 à notre Zozor : 
Code : C
Documents you may be interested
Documents you may be interested