begin process at 2008 07 06 13:03:37
1 205 545 membres
122 nouveaux aujourd'hui
14 119 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

DIAPORAMA D'IMAGES JPEG AVEC UNE LISTE CHAINÉE SOUS BORLAND


Information sur la source

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

  • //---------------------------------------------------------------------------
  • #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) ;
  • }
//---------------------------------------------------------------------------
#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.
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

  • signaler à un administrateur
    Commentaire de poppyto le 17/10/2005 04:15:50 administrateur CS

    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).

  • signaler à un administrateur
    Commentaire de Cardinali le 29/07/2006 21:04:07

    Il faut noter que les recherches sont difficiles car il y a trop de publicité et on ne se retrouve plus à un moment donné

Ajouter un commentaire

Pub



Appels d'offres

Plugin Dialer outlook
Budget : 2 000€
Travail graphique- ill...
Budget : 1 000€
creation de marque et ...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS