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

MFC Discussion :

[interface graphique] Effectuer un diaporama à partir de sauvegardes d'objet


Sujet :

MFC

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 37
    Points : 24
    Points
    24
    Par défaut [interface graphique] Effectuer un diaporama à partir de sauvegardes d'objet
    Bonjour à tous.
    Je suis en train de créer un application Sktecher (appli de dessin style "paint"), qui permet de dessiner à partir de formes telles que le rectangle, la ligne ...
    J'ai réussi à sauvegarder mon dessin, à charger un dessin précédemment enregistré, et je voudrais faire une sorte de diaporama, i.e. charger un dessin, puis attendre un laps de temps, puis charger un autre ... Par exemple, je fais 4 dessins que je sauvegarde dans un dossier, en clikant sur le bouton diapo, la première image s'affiche, puis la seconde, puis la troisième ...

    Comment faire, quelles méthodes permetraient de résoudre mon problème?

    En vous remerciant, et passez de bonnes fêtes !

  2. #2
    Membre expérimenté
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Points : 1 452
    Points
    1 452
    Par défaut
    simple, renseigne toi sur la fonction time().

    Ainsi, tu stockes à t=0 le temps courant dans une variable, puis tu fais une boucle vide tant que un certaint temps n'est pas dépassé, après tu charges l'autre image et ainsi de suite.

    Si tu utilises SDL, voici une classe tres pratique qui permet de faire ça:
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    //The timer
    class Timer
    {
        private:
        //The clock time when the timer started
        int startTicks;
     
        //The ticks stored when the timer was paused
        int pausedTicks;
     
        //The timer status
        bool paused;
        bool started;
     
        public:
        //Initializes variables
        Timer();
     
        //The various clock actions
        void start();
        void stop();
        void pause();
        void unpause();
     
        //Gets the timer's time
        int get_ticks();
     
        //Checks the status of the timer
        bool is_started();
        bool is_paused();    
    };
     
    Timer::Timer()
    {
        //Initialize the variables
        startTicks = 0;
        pausedTicks = 0;
        paused = false;
        started = false;    
    }
     
    void Timer::start()
    {
        //Start the timer
        started = true;
     
        //Unpause the timer
        paused = false;
     
        //Get the current clock time
        startTicks = SDL_GetTicks();    
    }
     
    void Timer::stop()
    {
        //Stop the timer
        started = false;
     
        //Unpause the timer
        paused = false;    
    }
     
    void Timer::pause()
    {
        //If the timer is running and isn't already paused
        if( ( started == true ) && ( paused == false ) )
        {
            //Pause the timer
            paused = true;
     
            //Calculate the paused ticks
            pausedTicks = SDL_GetTicks() - startTicks;
        }
    }
     
    void Timer::unpause()
    {
        //If the timer is paused
        if( paused == true )
        {
            //Unpause the timer
            paused = false;
     
            //Reset the starting ticks
            startTicks = SDL_GetTicks() - pausedTicks;
     
            //Reset the paused ticks
            pausedTicks = 0;
        }
    }
     
    int Timer::get_ticks()
    {
        //If the timer is running
        if( started == true )
        {
            //If the timer is paused
            if( paused == true )
            {
                //Return the number of ticks when the the timer was paused
                return pausedTicks;
            }
            else
            {
                //Return the current time minus the start time
                return SDL_GetTicks() - startTicks;
            }    
        }
     
        //If the timer isn't running
        return 0;    
    }
     
    bool Timer::is_started()
    {
        return started;    
    }
     
    bool Timer::is_paused()
    {
        return paused;    
    }
    Il faut l'utiliser avec SDL.

    voila ton code à ce moment:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Timer tim;
    while(il y a encore des images)
    {
      tim.start();
      while (tim.get_ticks() < temps en milliseconds après le départ du chrono)
      { ; }
      affiche_image;
      compteurImage --;
    }

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 37
    Points : 24
    Points
    24
    Par défaut
    ok ! Merci.

    Mais en fait, j'avais oublié de préciser que j'utilisais les MFC et je suis sous Visual c++. (architecture document/vue)

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 37
    Points : 24
    Points
    24
    Par défaut
    up !

    En utilisant les MFC comment faire ??? Merci

  5. #5
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut ,
    tu peux eventuellement utiliser un timer pour faire ton dessin .
    voir faq:
    http://c.developpez.com/faq/vc/?page=CWnd#SetTimer

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

Discussions similaires

  1. Matrice de taille quelconque à partir d'une interface graphique
    Par LMU2S dans le forum Interfaces Graphiques
    Réponses: 6
    Dernier message: 28/02/2008, 12h31
  2. Sauvegarde base via interface graphique
    Par Z3phur dans le forum Administration
    Réponses: 2
    Dernier message: 28/01/2008, 21h45
  3. Réponses: 2
    Dernier message: 27/05/2007, 20h09
  4. générer une interface graphique à partir d'un fichier XML
    Par chaval dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 15/03/2006, 10h32
  5. Ouvrir une console à partir d'une interface graphique
    Par jlbrd dans le forum Administration système
    Réponses: 2
    Dernier message: 12/12/2005, 11h53

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