Diaporama d'images jpeg avec une liste chainée sous borland

Description

Le programme, testé sour borland c++ builder 4, affiche un diaporama d'images de format jpeg en utilisant une liste chainée.
Deux boutons permettent de faire défiler les images dans les deux sens.
Pour pointer les images, le programme lit dans un fichier "images.txt" qui répertorie les images contenues dans un dossier "images".
C'est surtout l'affichage d'une image sous borland, l'utilisation de la liste et la lecture d'un fichier qui sont intéressantes.

Source / Exemple :


//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "BaseDeDonnees.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

        /*
                Chemin du fichier contenant les images JPEG à afficher
                Sur mon ordinateur, c'était le dossier "images" contenu dans le répertoire courant.
                Mettre exclusivement dans ce dossier des images au format JPEG.

  • /
String cheminDesImages = "images\\" ; /* Exemple de fichier de données : --- Début du fichier batteur.JPG chanteur_guitarre.JPG classique.jpg --- Fin du fichier
  • /
string nomfichier = "images.txt" ; TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { ouvrirFichier() ; afficherImage(noeud) ; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { noeud = noeud->fils ; if (noeud == NULL) noeud = liste ; afficherImage(noeud) ; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { if (noeud->pere == NULL) { while(noeud->fils != NULL) noeud = noeud->fils ; } else noeud = noeud->pere ; afficherImage(noeud) ; } //--------------------------------------------------------------------------- void TForm1::ouvrirFichier() { char c ; String phrase = "" ; liste = new chaine ; liste->pere = NULL ; liste->fils = NULL ; ifstream f(nomfichier.c_str(),ios::in); if(f) { while (f) { c = f.get(); if (c == '\n') { inserer(phrase, &liste, NULL) ; phrase = "" ; } else phrase += c ; } f.close(); } liste = liste->fils ; liste->pere = NULL ; noeud = liste ; Memo1->Clear() ; afficher(liste) ; } void TForm1::afficher(refchaine liste) { if (liste != NULL) { Memo1->Lines->Add(liste->nom) ; afficher(liste->fils) ; } } void TForm1::inserer(String nom, refchaine* noeud, refchaine* pere) { if (*noeud != NULL) inserer(nom, &((*noeud)->fils), noeud) ; else {
  • noeud = new chaine ;
(*noeud)->nom = nom ; (*noeud)->pere = *pere ; (*pere)->fils = *noeud ; (*noeud)->fils = NULL ; } } void TForm1::afficherImage(refchaine noeud) { String nom = noeud->nom ; // Le format d'image supporté est uniquement le JPEG TJPEGImage *jpg = new TJPEGImage ; jpg->LoadFromFile(cheminDesImages + nom) ; int largeurImage = Screen->Width / 2 ; int hauteurImage = Screen->Height / 2 ; // subterfuge pour remplir complétement la zone de l'image si le fichier source a des dimensions plus petites int largeurRectangle = (largeurImage > jpg->Width) ? largeurImage : jpg->Width ; int hauteurRectangle = (hauteurImage > jpg->Height) ? largeurImage : jpg->Height ; TRect *rect = new TRect(0,0,largeurRectangle, hauteurRectangle) ; Image1->Width = largeurImage ; Image1->Height = hauteurImage ; Image1->Canvas->StretchDraw(*rect, jpg) ; }

Conclusion :


Le programme n'affiche que des images Jpeg.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.