Afficher des images - Programmation - Lecture du tutoriel - Le Site du...    http://www.siteduzero.com/tuto-3-5432-1-affic...
Afficher des images - Programmation - Lecture du tutoriel - Le Site du...     http://www.siteduzero.com/tuto-3-5432-1-affi...
Afficher des images - Programmation - Lecture du tutoriel - Le Site du...        http://www.siteduzero.com/tuto-3-5432-1-a...
Afficher des images - Programmation - Lecture du tutoriel - Le Site du...     http://www.siteduzero.com/tuto-3-5432-1-affi...
Afficher des images - Programmation - Lecture du tutoriel - Le Site du...        http://www.siteduzero.com/tuto-3-5432-1-a...
Afficher des images - Programmation - Lecture du tutoriel - Le Site du...        http://www.siteduzero.com/tuto-3-5432-1-a...
Afficher des images - Programmation - Lecture du tutoriel - Le Site du...    http://www.siteduzero.com/tuto-3-5432-1-affic...
Afficher des images - Programmation - Lecture du tutoriel - Le Site du...      http://www.siteduzero.com/tuto-3-5432-1-aff...
Afficher des images - Programmation - Lecture du tutoriel - Le Site du...   http://www.siteduzero.com/tuto-3-5432-1-affich...
Afficher des images - Programmation - Lecture du tutoriel - Le Site du...    http://www.siteduzero.com/tuto-3-5432-1-affic...
Afficher des images - Programmation - Lecture du tutoriel - Le Site du...   http://www.siteduzero.com/tuto-3-5432-1-affich...
Afficher des images - Programmation - Lecture du tutoriel - Le Site du...      http://www.siteduzero.com/tuto-3-5432-1-aff...
Afficher des images - Programmation - Lecture du tutoriel - Le Site du...       http://www.siteduzero.com/tuto-3-5432-1-af...
Afficher des images - Programmation - Lecture du tutoriel - Le Site du...             http://www.siteduzero.com/tuto-3-543...
Afficher des images - Programmation - Lecture du tutoriel - Le Site du...    http://www.siteduzero.com/tuto-3-5432-1-affic...
Afficher des images - Programmation - Lecture du tutoriel - Le Site du...          http://www.siteduzero.com/tuto-3-5432-1...
Prochain SlideShare
Chargement dans…5
×

Afficher des images programmation - lecture du tutoriel -

805 vues

Publié le

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
805
Sur SlideShare
0
Issues des intégrations
0
Intégrations
1
Actions
Partages
0
Téléchargements
10
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Afficher des images programmation - lecture du tutoriel -

  1. 1. Afficher des images - Programmation - Lecture du tutoriel - Le Site du... http://www.siteduzero.com/tuto-3-5432-1-afficher-des-images.html Afficher des images Dans notre premier chapitre de "vraie" pratique de la SDL, nous avons appris à charger la SDL, ouvrir une fenêtre et gérer Auteur : M@teo21 les surfaces. Créé le : 20/03/2006 à 14h40 Modifié le : 24/03/2006 à Or, pour le moment nous navons appris quà créer des 14h30 surfaces unies, cest-à-dire ayant la même couleur. Les Noter et commenter ce tutorial surfaces unies ça va un moment, mais ce serait délicat de Imprimer ce tutorial 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 Sommaire du chapitre : Charger une image BMP Gestion de la transparence Charger plus de formats dimage avec SDL_Image Q.C.M. Charger une image BMP Allons bon Pourquoi est-ce quon 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 dimages de type Bitmap (extension ".bmp"). Ne paniquez pas pour autant, car grâce à une extension de la SDL (la librairie SDL_Image) nous verrons quil 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 dimage. Les images que vous voyez sur votre ordinateur sont stockées dans des fichiers. Il existe plusieurs formats dimages, cest-à-dire plusieurs façons de coder limage dans un fichier. Selon le format, limage prend plus ou moins despace disque et est de plus ou moins bonne qualité. Le Bitmap est un format non compressé (contrairement aux JPG, PNG, GIF etc.)1 sur 16 23/08/2007 02:06
  2. 2. Afficher des images - Programmation - Lecture du tutoriel - Le Site du... http://www.siteduzero.com/tuto-3-5432-1-afficher-des-images.html 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 limage est parfaite. Certains formats compressés comme le JPG détériorent la qualité de limage, ce nest pas le cas du BMP. Mais le fichier est aussi bien plus gros puisquil nest pas compressé ! Bref, il y a des avantages et des défauts. Pour la SDL, lavantage cest que ce type de fichier est simple et rapide à lire. Si vous avez souvent besoin de charger des images au cours de lexécution de votre programme, il vaut mieux utiliser des BMP : certes le fichier est plus gros, mais il se chargera plus vite quun GIF par exemple. Charger un bitmap Téléchargement du pack dimages 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 dimages (1 Mo) Placez toutes les images dans le dossier de votre projet. Nous allons commencer par travailler avec le fichier lac_en_montagne.bmp. Cest une scène 3D dexemple livrée avec le logiciel de modélisation Vue dEsprit (cétait à lépoque où jespérais me découvrir un talent artistique, mais ça fait belle lurette que jai abandonné ) Charger limage dans une surface Nous allons utiliser une fonction qui va charger limage BMP et la mettre dans une surface. Cette fonction a pour nom SDL_LoadBMP. Vous allez voir cest ridicule tellement cest simple Code : C maSurface = SDL_LoadBMP("image.bmp"); La fonction SDL_LoadBMP remplace 2 fonctions que vous connaissez : SDL_CreateRGBSurface : qui se chargeait dallouer de la mémoire pour stocker une surface de la taille demandée (= malloc). SDL_FillRect : qui remplissait la structure dune couleur unie. Pourquoi est-ce que ça remplace ces 2 fonctions ? Cest très simple : La taille à allouer en mémoire pour la surface dépend de la taille de limage : si limage fait une taille de 250 x 300, alors votre surface aura une taille de 250 x 300. Dautre part, votre surface sera remplie pixel par pixel par le contenu de votre image BMP. Codons sans plus tarder2 sur 16 23/08/2007 02:06
  3. 3. Afficher des images - Programmation - Lecture du tutoriel - Le Site du... http://www.siteduzero.com/tuto-3-5432-1-afficher-des-images.html 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 dimages en SDL", NULL); /* Chargement dune 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; } Jai 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 cest tout ! Admirez le résultat :3 sur 16 23/08/2007 02:06
  4. 4. Afficher des images - Programmation - Lecture du tutoriel - Le Site du... http://www.siteduzero.com/tuto-3-5432-1-afficher-des-images.html Cest 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. Licô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 ! Dailleurs les .ico nexistent que sous Windows, sur les autres OS on nen trouve pas ! La SDL réconcilie tout le monde en utilisant un truc bien à elle : une surface ! Eh oui, licône dun programme SDL nest rien dautre quune bête surface Votre icône doit normalement être de taille 16x16 pixels. Toutefois, sous Windows il faut que licône soit de taille 32x32 pixels sinon elle sera déformée. Ne vous en faites pas, la SDL "réduira" les dimensions de limage pour quelle rentre dans 16x16 pixels (vous imaginez pas le temps que jai mis pour comprendre ça ) Pour ajouter licône à la fenêtre, on utilise la fonction SDL_WM_SetIcon Cette fonction prend 2 paramètres : la surface qui contient limage à afficher ainsi que des informations sur la transparence (NULL si on ne veut pas de transparence). La gestion de la transparence dune icône est un peu compliquée (il faut dire un à un quels sont les pixels transparents), nous ne létudierons donc pas. On va combiner 2 fonctions en une : Code : C SDL_WM_SetIcon(SDL_LoadBMP("sdl_icone.bmp"), NULL); Limage est chargée en mémoire par SDL_LoadBMP et ladresse 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, cest-à-dire quelle doit se trouver avant SDL_SetVideoMode dans votre code source. Voici le code source complet (jai juste ajouté le SDL_WM_SetIcon par rapport à la dernière fois) : Code : C4 sur 16 23/08/2007 02:06
  5. 5. Afficher des images - Programmation - Lecture du tutoriel - Le Site du... http://www.siteduzero.com/tuto-3-5432-1-afficher-des-images.html 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 licô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 dimages 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, licône est chargée Gestion de la transparence Le problème de la transparence Nous avons chargé une jolie image bitmap tout à lheure dans notre fenêtre. Supposons que lon veuille blitter une image par-dessus. Ca vous arrivera très fréquemment, car dans un jeu en général le personnage que lon déplace est un bitmap, et il se déplace sur une image de fond. On va blitter limage de Zozor (la mascotte du Site du Zér0 !) sur la scène : Code : C5 sur 16 23/08/2007 02:06
  6. 6. Afficher des images - Programmation - Lecture du tutoriel - Le Site du... http://www.siteduzero.com/tuto-3-5432-1-afficher-des-images.html int main(int argc, char *argv[]) { 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 dimages 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 lon blitte ensuite à un endroit sur la scène. Le résultat est le suivant :6 sur 16 23/08/2007 02:06
  7. 7. Afficher des images - Programmation - Lecture du tutoriel - Le Site du... http://www.siteduzero.com/tuto-3-5432-1-afficher-des-images.html Cest moche hein ? Bah oui, cest parce que tas mis un fond bleu tout moche sur limage de Zozor ! Parce que vous croyez quavec un fond noir ou un fond marron derrière Zozor ça aurait été plus joli ? Ben non, le problème ici cest 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 limage Pour commencer, il faut préparer limage 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 limage. Celle-ci sera rendue transparente par la SDL au moment du blit. Observez à quoi ressemble mon zozor.bmp de plus près :7 sur 16 23/08/2007 02:06
  8. 8. Afficher des images - Programmation - Lecture du tutoriel - Le Site du... http://www.siteduzero.com/tuto-3-5432-1-afficher-des-images.html Jai mis un fond bleu uni exprès. Notez que jai choisi le bleu au hasard, jaurais très bien pu mettre un fond vert ou rouge par exemple. Ce qui compte, cest que cette couleur soit unique et unie. Jai choisi le bleu parce quil ny en avait pas dans limage de zozor. Si javais choisi le vert, jaurais pris le risque que lherbe que machouille Zozor (en bas à gauche de limage) 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 limage. Voici comment je men sers pour rendre le bleu derrière Zozor transparent : Code : C SDL_SetColorKey(zozor, SDL_SRCCOLORKEY, SDL_MapRGB(zozor->format, 0, 0, 255)); Il y a 3 paramètres : La surface qui doit être rendue transparente (ici cest 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. Jai utilité SDL_MapRGB pour créer la couleur au format nombre (Uint32) comme on la déjà fait par le passé. Comme vous le voyez, cest le bleu pur (0, 0, 255) que je rends transparent. En résumé, on charge dabord limage avec SDL_LoadBMP, on indique la couleur transparente avec SDL_SetColorKey, puis on peut blitter avec SDL_BlitSurface : Code : C /* On charge limage : */ zozor = SDL_LoadBMP("zozor.bmp"); /* On rend le bleu derrière Zozor transparent : */ SDL_SetColorKey(zozor, SDL_SRCCOLORKEY, SDL_MapRGB(zozor->format, 0, 0, 255)); /* On blitte limage maintenant transparente sur le fond : */ SDL_BlitSurface(zozor, NULL, ecran, &positionZozor); Résultat, Zozor est parfaitement intégré à la scène !8 sur 16 23/08/2007 02:06
  9. 9. Afficher des images - Programmation - Lecture du tutoriel - Le Site du... http://www.siteduzero.com/tuto-3-5432-1-afficher-des-images.html Ca, cest LA technique de base que vous réutiliserez tout le temps dans vos futurs programmes. Apprenez à bien manier la transparence car cest fondamental si on veut avoir un jeu un minimum réaliste La transparence Alpha Cest un autre type de transparence. Jusquici, on se contentait de définir UNE couleur de transparence (par exemple le bleu). Cette couleur napparaissait pas une fois limage blittée. La transparence Alpha cest autre chose. Elle permet de réaliser un "mélange" entre une image et le fond. Cest une sorte de fondu. La transparence Alpha dune 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. Cest un nombre compris entre 0 (image totalement transparente, donc invisible) et 255 (image totalement opaque, comme sil ny avait pas de transparence alpha)9 sur 16 23/08/2007 02:06
  10. 10. Afficher des images - Programmation - Lecture du tutoriel - Le Site du... http://www.siteduzero.com/tuto-3-5432-1-afficher-des-images.html Plus le nombre Alpha est petit, plus limage est transparente et fondue. Voici par exemple un code qui met une transparence alpha de 128 à notre Zozor : Code : C zozor = SDL_LoadBMP("zozor.bmp"); SDL_SetColorKey(zozor, SDL_SRCCOLORKEY, SDL_MapRGB(zozor->format, 0, 0, 255)); /* Transparence Alpha moyenne (128) : */ SDL_SetAlpha(zozor, SDL_SRCALPHA, 128); SDL_BlitSurface(zozor, NULL, ecran, &positionZozor); Vous noterez que jai conservé la transparence de SDL_SetColorKey. Les 2 types de transparence sont en effet combinables. Ce tableau vous montre à quoi ressemble Zozor selon la valeur de Alpha : Alpha Aperçu 255 (entièrement opaque) 19010 sur 16 23/08/2007 02:06
  11. 11. Afficher des images - Programmation - Lecture du tutoriel - Le Site du... http://www.siteduzero.com/tuto-3-5432-1-afficher-des-images.html Alpha Aperçu 128 (transparence moyenne) 75 0 (entièrement transparente) La transparence Alpha 128 (transparence moyenne) est une valeur spéciale qui est optimisée par la SDL. Ce type de transparence est plus rapide à calculer pour votre ordinateur que les autres. Cest peut être bon à savoir si vous utilisez beaucoup de transparence Alpha dans votre programme. Charger plus de formats dimage avec SDL_Image11 sur 16 23/08/2007 02:06
  12. 12. Afficher des images - Programmation - Lecture du tutoriel - Le Site du... http://www.siteduzero.com/tuto-3-5432-1-afficher-des-images.html La SDL ne gère que les Bitmaps (BMP) comme on la vu. A priori, ce nest pas un très gros problème parce que la lecture des BMP est rapide pour la SDL, mais il faut reconnaître quaujourdhui on est plutôt habitué à utiliser dautres formats. En particulier, nous sommes habitués aux formats dimages "compressés" comme le PNG, le GIF et le JPEG. Ca tombe bien, il existe justement une librairie SDL_Image qui gère tous les formats suivants : TGA BMP PNM XPM XCF PCX GIF JPG TIF LBM PNG Il est possible de rajouter des extensions à la SDL. Ce sont des librairies qui ont besoin de la SDL pour fonctionner. On peut voir ça comme des add-ons. SDL_Image est lune dentre elles. Installer SDL_image Téléchargement Il y a une page spéciale sur le site de la SDL qui référence les librairies utilisant la SDL. Cette page sintitule Libraries, vous trouverez un lien dans le menu de gauche. Vous pourrez voir quil y a pas mal de librairies disponibles. Celles-ci ne proviennent pas des auteurs de la SDL généralement, ce sont plutôt des utilisateurs de la SDL qui proposent leurs librairies. Certaines sont très bonnes et méritent le détour, dautres sont moins bonnes et encore buggées. Il faut arriver à faire le tri Cherchez SDL_Image dans la liste... Bon allez, je suis de bonne humeur : voici un lien direct vers la page de téléchargement de SDL_Image pour vous aider Téléchargez la version de SDL_Image qui vous correspond dans la section Binary (ne prenez PAS la source, on nen a pas besoin !) Si vous êtes sous Windows téléchargez SDL_image-devel-1.2.4-VC6.zip même si vous nutilisez pas Visual C++ ! Installation Dans ce zip vous trouverez : SDL_image.h : le seul header dont a besoin la librairie SDL_image. Placez-le dans mingw32/include/SDL/, cest-à-dire à côté des autres headers de la SDL. SDL_image.lib : placez-le dans mingw32/lib. Oui, je sais, je vous ai dit que normalement les .lib étaient des fichiers réservés à Visual, mais ici exceptionnellement le .lib fonctionnera même avec le compilateur mingw. Plusieurs DLL : placez-les toutes dans le dossier de votre projet (à côté de SDL.dll donc). Ensuite, vous devez modifier les options de votre projet pour "linker" avec le fichier SDL_image.lib. Si vous êtes sous Code::Blocks par exemple, allez dans le menu Projects / Build options. Dans longlet Linker, cliquez sur le bouton "Add" et indiquez où se trouve le fichier SDL_image.lib Si on vous demande "Keep as a relative path ?", répondez ce que vous voulez ça ne changera rien dans limmédiat. Je recommande de répondre "Non" personnellement12 sur 16 23/08/2007 02:06
  13. 13. Afficher des images - Programmation - Lecture du tutoriel - Le Site du... http://www.siteduzero.com/tuto-3-5432-1-afficher-des-images.html Ensuite, vous navez plus quà inclure le header SDL_image.h dans votre code source comme ceci : Code : C #include <SDL/SDL_image.h> Et voilà, la librairie SDL_image devrait maintenant fonctionner (à condition que vous ayez bien fait exactement tout ce que jai indiqué bien sûr ) Si vous êtes sous Dev-C++ ou Visual Studio, la manipulation est quasiment la même. Si vous avez réussi à installer la SDL, vous naurez aucun problème pour installer SDL_image Charger les images En fait, installer SDL_image est 100 fois plus compliqué que de lutiliser, cest vous dire la complexité du truc Il y a UNE fonction à connaître : IMG_Load. Elle prend un paramètre : le nom du fichier à ouvrir. Ce qui est génial, cest que cette fonction est capable douvrir tous les types de fichiers que gère SDL_image (GIF, PNG, JPG, mais aussi BMP, TIF...). Elle détectera toute seule le type du fichier en fonction de son extension. Comme SDL_image peut aussi ouvrir les BMP, vous pouvez même oublier la fonction SDL_LoadBMP maintenant et nutiliser plus que IMG_Load pour le chargement de nimporte quelle image. Autre bon point : si limage que vous chargez gère la transparence (comme cest le cas des PNG et des GIF), alors SDL_image activera automatiquement la transparence pour cette image ! Cela vous évite donc davoir à appeler SDL_SetColorKey Voici le code source complet qui charge sapin.png et laffiche. Notez bien que jinclue SDL/SDL_image.h et que je ne fais pas appel à SDL_SetColorKey car mon PNG est transparent. Vous allez voir que jutilise IMG_Load partout dans ce code en remplacement de SDL_LoadBMP. Code : C13 sur 16 23/08/2007 02:06
  14. 14. Afficher des images - Programmation - Lecture du tutoriel - Le Site du... http://www.siteduzero.com/tuto-3-5432-1-afficher-des-images.html #include <stdlib.h> #include <stdio.h> #include <SDL/SDL.h> #include <SDL/SDL_image.h> /* Inclusion du header de SDL_image */ void pause(); int main(int argc, char *argv[]) { SDL_Surface *ecran = NULL, *imageDeFond = NULL, *sapin = NULL; SDL_Rect positionFond, positionSapin; positionFond.x = 0; positionFond.y = 0; positionSapin.x = 500; positionSapin.y = 260; SDL_Init(SDL_INIT_VIDEO); SDL_WM_SetIcon(IMG_Load("sdl_icone.bmp"), NULL); ecran = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE); SDL_WM_SetCaption("Chargement dimages en SDL", NULL); imageDeFond = IMG_Load("lac_en_montagne.bmp"); SDL_BlitSurface(imageDeFond, NULL, ecran, &positionFond); /* Chargement dun PNG avec IMG_Load Celui-ci est automatiquement rendu transparent car les informations de transparence sont codées à lintérieur du fichier PNG */ sapin = IMG_Load("sapin.png"); SDL_BlitSurface(sapin, NULL, ecran, &positionSapin); SDL_Flip(ecran); pause(); SDL_FreeSurface(imageDeFond); SDL_FreeSurface(sapin); SDL_Quit(); return EXIT_SUCCESS; } void pause() { int continuer = 1; SDL_Event event; while (continuer) { SDL_WaitEvent(&event); switch(event.type) { case SDL_QUIT: continuer = 0; } } } Résultat :14 sur 16 23/08/2007 02:06
  15. 15. Afficher des images - Programmation - Lecture du tutoriel - Le Site du... http://www.siteduzero.com/tuto-3-5432-1-afficher-des-images.html Quand même bien pratique cette petite librairie Q.C.M. Quelle fonction permet dajouter une icône à la fenêtre ? j k l m n SDL_WM_SetIcon j k l m n SDL_WM_Set_Icon j k l m n SDL_SetIcon Quest-ce que la transparence Alpha ? j k l m n Une couleur rendue invisible j k l m n Plusieurs couleurs rendues invisibles j k l m n Un fondu entre deux images15 sur 16 23/08/2007 02:06
  16. 16. Afficher des images - Programmation - Lecture du tutoriel - Le Site du... http://www.siteduzero.com/tuto-3-5432-1-afficher-des-images.html Pourquoi peut-on parfois se passer de la fonction SDL_SetColorKey si on charge une image GIF ou PNG avec SDL_image ? j k l m n Parce que les formats GIF et PNG contiennent des informations de transparence j k l m n Parce que SDL_image est intelligente et devine toute seule la couleur de transparence j k l m n Parce que la couleur de transparence peut être indiquée lors de lappel à IMG_Load Quel est le seul format dimage que permet de lire la librairie SDL à la base ? j k l m n JPG j k l m n XPM j k l m n BMP j k l m n GIF j k l m n PNG Correction ! Vous êtes maintenant capables dafficher de nombreux type dimages dans vos programmes SDL, et, surtout, de rendre ces images transparentes. Avec ces fonctions pourtant très simples de la SDL, vous allez pouvoir réaliser à peu près tous les programmes que vous voulez. Mais avant ça, il va falloir étudier un chapitre très important de la SDL : les évènements. Cela vous permettra de gérer le clavier, la souris et le joystick, rien de moins que ça ! Au lieu davoir un programme "passif" comme maintenant où vous vous contentez de regarder votre fenêtre, vous allez pouvoir contrôler un personnage au clavier, cliquer dans la fenêtre etc. Auteur : M@teo21 Noter et commenter ce tutorial Imprimer ce tutorial16 sur 16 23/08/2007 02:06

×