IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Création d'une image animée


Sujet :

C++Builder

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Août 2002
    Messages
    481
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 481
    Points : 242
    Points
    242
    Par défaut Création d'une image animée
    Bonjour,
    j'utilise GIFImage pour créer une image GIF animée.
    La création, l'enregistrement et la visualisation avec un programme tel que IrfanView se passent correctement.

    Ce que je n'ai pas trouvé est la méthode pour imposer un intervalle de temps entre 2 images successives.

    Quelqu'un peut-il m'aider ?

    Merci
    Gilbert PASQUALINI

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 573
    Points : 713
    Points
    713
    Par défaut
    Salut
    Le probleme c est que des composants gifimage , il y en a un paquet ...
    C est celui de Melander ?
    Delay , non ?

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Août 2002
    Messages
    481
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 481
    Points : 242
    Points
    242
    Par défaut
    J'aurais du le préciser : c'est celui qui est fourni avec avec C++ Builder XE2.

    J'ai trouvé quelque chose, mais ça n'a pas l'air de fonctionner,, même si la compilation se passe normalement :
    A l'intérieur d'une boucle traitant toutes les images du GIF :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      ext = new TGIFGraphicControlExtension(GIF->Images->operator [](i) );
      ext->Delay = 3;
      GIF->Images->operator [](i)->Extensions->Add(ext);
    Gilbert PASQUALINI

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 573
    Points : 713
    Points
    713

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Août 2002
    Messages
    481
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 481
    Points : 242
    Points
    242
    Par défaut
    Lorsque j'écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ext = new TGIFGraphicControlExtension(GIF->Images->operator [](i) );
    ext->SetDelay(10);
    J'ai le message "SetDelay(unsigned short)" n'est pas accessible.

    Je suis surpris parce que j'ai vu, sur Internet, un exemple Delphi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Ext := TGIFGraphicControlExtension.Create(GIF.Images[Resullt]);
    Ext.Delay:= 30; // Animation Delay (30 = 300 ms)
    Il semble que ce soit une autre version de GIFImage. à cause de
    Gilbert PASQUALINI

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Août 2002
    Messages
    481
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 481
    Points : 242
    Points
    242
    Par défaut
    J'ai examiné le fichier "Vcl.Imaging.GIFImg.pas".
    Il y a bien une procédure protégée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    procedure TGIFGraphicControlExtension.SetDelay(Value: WORD)
    mais il y a une Propriété :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    property Delay: WORD read GetDelay write SetDelay;
    Il suffit, a priori, d'écrire qui est accessible.

    Je vais tester un peu plus et je vous tiendrai au courant.

    Merci.
    Gilbert PASQUALINI

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Août 2002
    Messages
    481
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 481
    Points : 242
    Points
    242
    Par défaut
    J'ai testé suivant ma précédente réponse.
    Cela fonctionne correctement.

    Merci
    Gilbert PASQUALINI

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 573
    Points : 713
    Points
    713
    Par défaut
    Postes un sample si tu veux bien , çà pourra toujours servir

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Août 2002
    Messages
    481
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 481
    Points : 242
    Points
    242
    Par défaut
    Voilà un exemple d'utilisation de GIFImage pour créer une image animée gif.
    L'image animée est celle d'un dodécaèdre qui tourne autour d'un axe.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    void __fastcall TfDodecaIso::bCreerGifClick(TObject *Sender)
    {
    	int	largeur = (eLargeur->Text).ToInt();  // largeurt de l'image
    	int iNombre = (eNombre->Text).eNombre->Text; // Nombre d'images
    	int Intervalle = (eIntervalle->Text).ToInt();// Intervalle de temps entre 2 images
    	TGIFImage* GIF = new TGIFImage;
    	Graphics::TBitmap* bmp = new Graphics::TBitmap;
    	bmp->Width = largeur; bmp->Height = largeur;
    	const double beta = (360.0/double(iNombre))*M_PI/180.0;
    	TCanvas* pcanvas= bmp->Canvas;
    	TGIFGraphicControlExtension* ext;
     
    	usDirEnregistrer = usDirImage + "\\Dodecaedre\\";
    	usNomFichier = usDirEnregistrer + "Dodecaedre-";
     
     
    	if(!DirectoryExists(usDirEnregistrer)) CreateDir(usDirEnregistrer);
     
    	for(int i = 0; i < iNombre; i++)
    	{
    		Rotation(0, beta, 0); 
    		Tracer(pcanvas, largeur, largeur); 
    		GIF->Add(bmp);
    		ext = new TGIFGraphicControlExtension(GIF->Images->operator [](i) );
    		ext->Delay = Intervalle;
    		GIF->Images->operator [](i)->Extensions->Add(ext);
    	}
     
    	GIF->Animate = true;
    	GIF->Pack();
    	SavePictureDialog1->Title = "Enrgistrer l'image GIF au format gif";
    	SavePictureDialog1->FilterIndex = 3;
    	SavePictureDialog1->Execute();
    	GIF->SaveToFile(usNom);
     
    	GIF->Clear();
    	delete GIF;
     
    	delete bmp;
    }
    //---------------------------------------------------------------------------
    Ne pas oublier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #include <Vcl.Imaging.GIFImg.hpp>
    J'ai supprimé dans ce que je présente un certain nombre de lignes.
    En effet, le programme permet de créer également des images animées d'un
    icosaèdre ou d'un icosaèdre tronqué.
    Je suis réceptif à toute remarque.
    Gilbert PASQUALINI

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 573
    Points : 713
    Points
    713
    Par défaut
    Ok merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. pb avec une image animée
    Par kivoch dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 07/01/2006, 16h32
  2. Réponses: 1
    Dernier message: 03/01/2006, 17h46
  3. [Tkinter] Afficher une image animée
    Par Chris33 dans le forum Tkinter
    Réponses: 3
    Dernier message: 16/12/2005, 23h14
  4. [ImageMagick] Header envoyé lors de la création d'une image
    Par KLiFF dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 25/10/2005, 16h35
  5. [Débutante] Création d'une image avec un composant
    Par gwendo dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 09/07/2004, 09h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo