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

Soyez le premier à donner votre avis sur cette source.

Vue 14 154 fois - Téléchargée 1 184 fois

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

Ajouter un commentaire

Commentaires

Messages postés
1
Date d'inscription
jeudi 3 décembre 2009
Statut
Membre
Dernière intervention
3 décembre 2009

lors de la compilation, il me dit qu'il y'a un header manquant : vcl.h. Que dois-je faire? vc1.H fait-il partie de la librairie GTK+?
Messages postés
1
Date d'inscription
samedi 29 juillet 2006
Statut
Membre
Dernière intervention
29 juillet 2006

Il faut noter que les recherches sont difficiles car il y a trop de publicité et on ne se retrouve plus à un moment donné
Messages postés
540
Date d'inscription
dimanche 29 décembre 2002
Statut
Modérateur
Dernière intervention
13 mai 2011

C'est pas mal mais le fichier texte ne sert à rien (autant parcourir les répertoire non ?), je ne parle même pas de la liste chaînée (inutile ici aussi).

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.