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

Qt Discussion :

Pause entre chaque image ?


Sujet :

Qt

  1. #1
    Invité
    Invité(e)
    Par défaut Pause entre chaque image ?
    Bonjour,

    en vue de créer une animation simple comme un déplacement d'un dessin en 2 dimensions (carrer ou rectangle etc..) en Qt4 .

    Voici ma question :

    Quels sont les instructions en Qt4 qui permettent de faire des pauses de quelques dixièmes de secondes (0.1sec) entre chaque image (sur une image déclarer avec QPixmap ) ?

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 062
    Points
    219 062
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Qu'est ce que tu appelle entre chaque images ? Fais tu une sorte de diaporama.
    Tu peux utiliser un QTimer, pour appeler une fonction toute les n millisecondes
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Invité
    Invité(e)
    Par défaut ?QTimer
    Merci, pouvez-vous me donnez un programme ou modifier le programme qui suit :
    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
    #include <QApplication>
    #include <QLabel>
    #include <QPainter>
    #include <QPixmap>
    #include <QPaintDevice>
     
    void dessiner (QPaintDevice* cetimage)
    {
    	QPainter mmmh (cetimage) ;
    	QRectF rectangl1(10.0,10.0,500.0,100.0) ;
    	QRectF rectangl2(10.0,120.0,500.0,100.0) ;
    	mmmh.drawRect(rectangl1) ;
    	mmmh.drawRect(rectangl2) ;
     
    }
     
    int main(int argc,char* argv[])
    {
    	QApplication monapp(argc,argv) ;
    	QPixmap pixel(800,600)	;
    	pixel.fill(Qt::white)	;
    	dessiner(&pixel)	;
    	QLabel lbel(0) 		;
    	lbel.setPixmap(pixel)	;
    	lbel.show()		;
    	return monapp.exec()	;
    }
    merci ,avance

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 062
    Points
    219 062
    Billets dans le blog
    120
    Par défaut
    Pour l'instant je ne peux pas t'aider beaucoup plus, tu n'explique même pas ce que tu cherche à faire.
    Tu demande comment faire des pauses, certes, mais tu dis pas entre quoi et quoi.
    Car, sous QT, du moins la première méthode à laquelle je pense est un QTimer, mais le QTimer, n'est qu'une classe qui indique lorsque un certain temps est dépassé. Plus précisément elle lance un signal une fois que le temps est écoulé. Après le reste du programme va intéragir une fois que ce signal est reçue ( dans ton cas il semblerai, un changement d'image ). Mais je ne suis pas sur que tu veuille faire un truc comme une sorte de diaporama...
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Invité
    Invité(e)
    Par défaut le programme plus mes commentaires d'explication
    Bonjour , je m'excuse de n' avoir pas repondu plus tôt... .Voici le programme avec les
    commentaires d'explication.

    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
     
    //Elements de le bibliotheque qt insdispensable pour le programme
    #include <QApplication>
    #include <QLabel>
    #include <QPainter>
    #include <QPixmap>
    #include <QPaintDevice>
     
    //Déclaration de la fonction " rectanglenb2 "
    int rectanglenb2 (QPaintDevice* cetimage)
    {
    //Déclaration de la variable " dessinevers " .
    	QPainter dessinevers (cetimage) ;
    //Creation d'un rectangle de coordonnée : x = 10.0 , y = 10.0 , longeur = 300.0 et de largeur = 100.0  .
    	QRectF rectangl1(10.0,10.0,300.0,100.0) ;
    	dessinevers.drawRect(rectangl1) ;
    //Creation d'un rectangle de coordonnée : x = 10.0 , y = 120.0 , longeur = 300.0 , largeur = 100.0
    	QRectF rectangl2(10.0,120.0,300.0,100.0) ;
    	dessinevers.drawRect(rectangl2) ;
    //L'entier de valeur " 0 " est retourner .
    return 0 ;	
    }
     
    //Partie principale d'execution .
    int main(int argc,char* argv[])
    {
    	QApplication monapp(argc,argv) ;
    //Création d'une image " pixels " de dimension 400 x 300 .
    	QPixmap pixels(400,300)	;
    //Remplissage en blanc de l'image " pixels " .
    	pixels.fill(Qt::white)	;
    //Les rectangle1 et recntangle2 sont dessinés sur " pixels " .
    	rectanglenb2(&pixels)	;
    //Décalration de la variable label1 pour l'affichage du dessin " pixels " .
    	QLabel label1		;
    	label1.setPixmap(pixels)	;
    //Affcihage du dessin .
    	label1.show()		;
    //Exécution de toute l'application monapp .
    	monapp.exec()	;
    //L'entier de valeur 0 est retourné .
    return 0 ;
    }
    .....Mais je ne suis pas sur que tu veuille faire un truc comme une sorte de diaporama...
    Oui c'est un diaporama qu'il me faut...

  6. #6
    Membre confirmé Avatar de cboudy
    Profil pro
    Ingénieur informatique industrielle
    Inscrit en
    Avril 2006
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur informatique industrielle
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 406
    Points : 616
    Points
    616
    Par défaut
    il est possible d'utiliser un QTimer : tu le lances et à chaque événement reçu tu mets à jour ton widget

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    je n'ai pas réussi a utiliser le QTimer , merci à tous d'avoir paticiper...

    Aurevoir.

  8. #8
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 062
    Points
    219 062
    Billets dans le blog
    120
    Par défaut
    Qu'est ce qui n'a pas marché avec le QTimer ?

    Il faut le connecter à un fonction ( SLOT ). Cette fonction devra changer l'image, et aussi avoir une ligne de ce genre:
    La deuxième chose à configuré dans un QTimer est le temps avant la fin du QTimer ( ce temps est en millisecondes )

    Donc on connecte une fonction qui sera executé à la fin du timer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    QTimer* t = new QTimer(this);
    t->setInterval(nb_milliseconds);
    connect(t, SIGNAL(timeout()), this, SLOT(changeImage()));
    t->start
    Et voilà
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    merci, beaucoup...

    Aurevoir...

  10. #10
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    voici un petit programme d'animation en 2 dimensions avec des rectangles :

    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
    #include <QApplication>
    #include <QTimer>
    #include <QObject>
    #include <QPixmap>
    #include <QLabel>
    #include <QList>
    #include <QPainter>
     
    int rectangle(QPixmap * image,int Ycoord)
    {	QPainter pinceau(image) ;
    		pinceau.drawRect(50,Ycoord,460,40) ;
    return 0 ;
    }
     
    QPixmap vertimage(int longueur,int largeur)
    {	QPixmap image(longueur,largeur) ;
    		image.fill(Qt::green) ;
    return image ;
    }
     
    int main(int argc,char * argv[])
    {	QApplication app(argc,argv) ;
    	QPixmap image(vertimage(600,510)) ;
    	QList <QPixmap> uneliste  ;
    		rectangle(&image,10 ) ;
    		uneliste.operator<<(image)	;
    		rectangle(&image,60 ) ;
    		uneliste.operator<<(image)	;
    		rectangle(&image,110 ) ;
    		uneliste.operator<<(image)	;
    		rectangle(&image,160 ) ;
    		uneliste.operator<<(image)	;
    		rectangle(&image,210 ) ;
    		uneliste.operator<<(image)	;
    		rectangle(&image,260 ) ;
    		uneliste.operator<<(image)	;
    		rectangle(&image,310 ) ;
    		uneliste.operator<<(image)	;
    		rectangle(&image,360 ) ;
    		uneliste.operator<<(image)	;
    		rectangle(&image,410 ) ;
    		uneliste.operator<<(image)	;
    		rectangle(&image,460 ) ;
    		uneliste.operator<<(image)	;	
    	QLabel monlabel ;
    		monlabel.setPixmap(uneliste.at(0)) ;
    		monlabel.show() ;
    	QTimer::singleShot(1000,&app,SLOT(quit()) ) ;
    app.exec() ;
    int ctr = 0 ;
    	for (ctr = 1 ; ctr < 10 ; ctr++)
    	{	monlabel.setPixmap(uneliste.at(ctr)) ;
    		monlabel.show() ;
    	QTimer::singleShot(1000,&app,SLOT(quit()) );
    app.exec() ;
    	}
    monlabel.show() ;
    app.exec() ;
    return 0 ;
    }
    ....

  11. #11
    Invité
    Invité(e)
    Par défaut
    bonjour,

    voici une autre version :

    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
    #include <QApplication>
    #include <QTimer>
    #include <QObject>
    #include <QPixmap>
    #include <QLabel>
    #include <QList>
    #include <QPainter>
     
    int rectangle(QPixmap * image,int Ycoord)
    {	QPainter pinceau(image) ;
    		pinceau.drawRect(50,Ycoord,460,40) ;
    return 0 ;
    }
     
    QPixmap vertimage(int longueur,int largeur)
    {	QPixmap image(longueur,largeur) ;
    		image.fill(Qt::green) ;
    return image ;
    }
     
    int main(int argc,char ** argv)
    {	QApplication app(argc,argv) ;
    //-----------------------------------------------
    	QPixmap image_base(vertimage(600,510)) ;
    	QPixmap image_temp ;
    		image_temp.operator=(image_base) ;
    	QList <QPixmap> uneliste  ;
    		rectangle(&image_temp,10 ) ;
    		uneliste.operator<<(image_temp)	;
    //-----------------------------------------------
    		image_temp.operator=(image_base) ;
    		rectangle(&image_temp,60 ) ;
    		uneliste.operator<<(image_temp)	;
    //-----------------------------------------------
    		image_temp.operator=(image_base) ;
    		rectangle(&image_temp,110 ) ;
    		uneliste.operator<<(image_temp)	;
    //-----------------------------------------------
    		image_temp.operator=(image_base) ;
    		rectangle(&image_temp,160 ) ;
    		uneliste.operator<<(image_temp)	;
    //-----------------------------------------------
    		image_temp.operator=(image_base) ;
    		rectangle(&image_temp,210 ) ;
    		uneliste.operator<<(image_temp)	;
     
    		image_temp.operator=(image_base) ;
    		rectangle(&image_temp,260 ) ;
    		uneliste.operator<<(image_temp)	;
     
    		image_temp.operator=(image_base) ;
    		rectangle(&image_temp,310 ) ;
    		uneliste.operator<<(image_temp)	;
     
    		image_temp.operator=(image_base) ;
    		rectangle(&image_temp,360 ) ;
    		uneliste.operator<<(image_temp)	;
     
    		image_temp.operator=(image_base) ;
    		rectangle(&image_temp,410 ) ;
    		uneliste.operator<<(image_temp)	;
     
    		image_temp.operator=(image_base) ;
    		rectangle(&image_temp,460 ) ;
    		uneliste.operator<<(image_temp)	;
     
    //---------------------------------------------
    	QLabel label ;	
    	int compteur = 0 ;
    	for (compteur = 0 ; compteur < 10 ; compteur++)
    	{	    label.setPixmap(uneliste.at(compteur)) ;
    			label.show() ;
    		QTimer::singleShot(500,&app,SLOT(quit()) );
    	app.exec() ;
    	}
    		label.show() ;
    app.exec() ;
    return 0 ;
    }
    ...

  12. #12

  13. #13
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Bon...je sais que cette discusion est plutôt ancienne, mais sinon...voici quelques contributions vers des programmes que j'ai écrit :

    Animation de cercle de rectangle.

    Animation defilement chiffres.

    Animation-geometrique.

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

Discussions similaires

  1. Insérer une pause entre chaque action !
    Par cincap dans le forum Débuter
    Réponses: 10
    Dernier message: 31/08/2013, 08h32
  2. Emailing HTML - Espace entre chaque image
    Par Falard dans le forum Balisage (X)HTML et validation W3C
    Réponses: 25
    Dernier message: 30/08/2011, 14h50
  3. Réponses: 11
    Dernier message: 16/04/2010, 22h04
  4. espace entre chaque image
    Par Angelik dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 08/03/2007, 11h16
  5. Effet de transition simple entre 2 images
    Par ChrisFAPS dans le forum Flash
    Réponses: 2
    Dernier message: 18/04/2003, 12h41

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