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 !

ANIMATION D'IMAGES


Information sur la source

Catégorie :Graphique Source .NET ( DotNet ) Classé sous : imagelist, picturebox, timer, vba excel, animation Niveau : Débutant Date de création : 29/07/2008 Date de mise à jour : 09/08/2008 17:25:13 Vu / téléchargé: 4 961 / 385

Note :
Aucune note

Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
Voici 2 méthodes d'animation d'images avec des imagelist que vous pouvez inclure dans vos applications.Vous pouvez mettre aussi une animation dans vos boutons.
 

Source

  • Public Class Form1
  • 'sans pictureBox
  • Private m_Index As Integer
  • Private m_NumImages As Integer
  • 'avec pictureBox et bouton
  • Private m_ControlCount As Int16 = 0
  • Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  • 'Avec pictureBox
  • tmrImage.Enabled = True
  • tmrImage.Start()
  • 'Avec bouton
  • tmrbouton.Enabled = True
  • tmrbouton.Start()
  • 'Sans pictureBox
  • m_NumImages = imgList.Images.Count
  • m_Index = -1
  • End Sub
  • ' 1ère Méthode avec une pictureBox
  • Private Sub tmrImage_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmrImage.Tick
  • ' Mettre l'image dans la PictureBox.
  • PictureBox1.Image = imgList.Images(m_ControlCount)
  • 'On fait défiler les images
  • m_ControlCount = (m_ControlCount + 1) Mod imgList.Images.Count
  • End Sub
  • Private Sub btnstop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnstop.Click
  • If tmrImage.Enabled = True Then 'Intervalle 100
  • btnstop.Text = "&Start"
  • tmrImage.Stop()
  • Else
  • btnstop.Text = "&Stop"
  • tmrImage.Start()
  • End If
  • End Sub
  • ' 2ème Méthode sans pictureBox
  • Private Sub tmrAnimation_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmrAnimation.Tick
  • m_Index = (m_Index + 1) Mod m_NumImages
  • Dim gr As Graphics = Me.CreateGraphics()
  • gr.DrawImage(imgList.Images(m_Index), 10, 10) 'positionnement de l'image sur la form
  • End Sub
  • Private Sub btnarret_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnarret.Click
  • If tmrAnimation.Enabled = True Then 'Intervalle 150
  • btnarret.Text = "&Start"
  • tmrAnimation.Stop()
  • Else
  • btnarret.Text = "&Stop"
  • tmrAnimation.Start()
  • End If
  • End Sub
  • ' 3ème Méthode dans un bouton
  • Private Sub btntest_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btntest.Click
  • If tmrbouton.Enabled = True Then 'Intervalle 50
  • btntest.Text = "&Start"
  • tmrbouton.Stop()
  • Else
  • btntest.Text = "&Stop"
  • tmrbouton.Start()
  • MsgBox(" C'est super, ça marche!!!")
  • End If
  • End Sub
  • Private Sub tmrbouton_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmrbouton.Tick
  • ' Mettre l'image dans le bouton
  • btntest.Image = ImageList1.Images(m_ControlCount)
  • 'On fait défiler les images
  • m_ControlCount = (m_ControlCount + 1) Mod imgList.Images.Count
  • End Sub
  • End Class
Public Class Form1
    'sans pictureBox
    Private m_Index As Integer
    Private m_NumImages As Integer
    'avec pictureBox et bouton
    Private m_ControlCount As Int16 = 0
   
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Avec pictureBox 
        tmrImage.Enabled = True
        tmrImage.Start()
        'Avec  bouton
        tmrbouton.Enabled = True
        tmrbouton.Start()
        'Sans pictureBox
        m_NumImages = imgList.Images.Count
        m_Index = -1
    End Sub
    ' 1ère Méthode avec une pictureBox
    Private Sub tmrImage_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmrImage.Tick
        ' Mettre l'image dans la PictureBox.
        PictureBox1.Image = imgList.Images(m_ControlCount)
        'On fait défiler les images 
        m_ControlCount = (m_ControlCount + 1) Mod imgList.Images.Count

    End Sub

   Private Sub btnstop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnstop.Click
        If tmrImage.Enabled = True Then 'Intervalle 100
            btnstop.Text = "&Start"
            tmrImage.Stop()
        Else
            btnstop.Text = "&Stop"
            tmrImage.Start()
        End If

    End Sub
    ' 2ème Méthode sans pictureBox
    Private Sub tmrAnimation_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmrAnimation.Tick
        m_Index = (m_Index + 1) Mod m_NumImages
        Dim gr As Graphics = Me.CreateGraphics()
        gr.DrawImage(imgList.Images(m_Index), 10, 10) 'positionnement de l'image sur la form
    End Sub

    Private Sub btnarret_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnarret.Click
        If tmrAnimation.Enabled = True Then 'Intervalle 150
            btnarret.Text = "&Start"
            tmrAnimation.Stop()
        Else
            btnarret.Text = "&Stop"
            tmrAnimation.Start()
        End If
    End Sub
    ' 3ème Méthode dans un bouton
    Private Sub btntest_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btntest.Click
        If tmrbouton.Enabled = True Then 'Intervalle 50
            btntest.Text = "&Start"
            tmrbouton.Stop()
        Else
            btntest.Text = "&Stop"
            tmrbouton.Start()
            MsgBox(" C'est super, ça marche!!!")
        End If
    End Sub

    Private Sub tmrbouton_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmrbouton.Tick
        ' Mettre l'image dans le bouton
        btntest.Image = ImageList1.Images(m_ControlCount)
        'On fait défiler les images 
        m_ControlCount = (m_ControlCount + 1) Mod imgList.Images.Count
    End Sub
   
End Class

Fichier Zip

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

Historique

30 juillet 2008 11:07:59 :
Rectification du code suite au conseil de NHENRY.Merci
04 août 2008 18:15:39 :
Ajout du code en VBA Excel
09 août 2008 14:40:00 :
Ajout d'une animation d'image dans un bouton.
09 août 2008 17:25:14 :
Ajout d'une 2ème imaglist pour mettre l'image dans le bouton à la bonne dimension.

Commentaires et avis

signaler à un administrateur
Commentaire de NHenry le 30/07/2008 09:12:30

Pour cette partie de ton code, il y a mieux (enfin je pense) :
#  Private Sub tmrImage_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmrImage.Tick
# ' Mettre l'image dans la PictureBox.
# PictureBox1.Image = imgList.Images(m_ControlCount)
#
# 'Augmentez le compte (s)
# m_ControlCount += 1
#
# 'Si l'image finale a été montrée
# 'On recommence
# If m_ControlCount = 19 Then m_ControlCount = 0 '19 Nombre d'images dans l'imagelist
# End Sub


#  Private Sub tmrImage_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmrImage.Tick
# ' Mettre l'image dans la PictureBox.
# PictureBox1.Image = imgList.Images(m_ControlCount)
#
# 'Augmentez le compte avec RAZ auto (et en fonction du nombre d'image réel)
# m_ControlCount = (m_ControlCount+1) mod imgList.Images.count

# End Sub

signaler à un administrateur
Commentaire de Le Pivert le 30/07/2008 10:59:36

Tout à fait exact et en plus de raccourcir le code, cela évite tout bug dû aux erreurs de saisie du nombre d'images.
Merci NHENRY
@+

signaler à un administrateur
Commentaire de PCPT le 30/07/2008 14:50:12 administrateur CS

salut,
le code de btnstop_Click et btnarret_Click sont quasiment les mêmes.
il n'y a pas quelque chose à faire avec les handles pour ne pas avoir cette redondance?
(pour 'simuler' un groupe de contrôle quoi)

très léger comme code quand même. transformer çà en UC peut-être?
++ ;)

signaler à un administrateur
Commentaire de NHenry le 30/07/2008 15:06:35

Un truc genre
Private Sub btnstop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnstop.Click,btnarret.Click
   if sender if btnstop then
      If tmrImage.Enabled = True Then
         btnstop.Text = "&Start"
         tmrImage.Stop()
      Else
         btnstop.Text = "&Stop"
         tmrImage.Start()
      End If
   else sender is btnarret then
      If tmrAnimation.Enabled = True Then
         btnarret.Text = "&Start"
         tmrAnimation.Stop()
      Else
         btnarret.Text = "&Stop"
         tmrAnimation.Start()
      End If
   End if
End Sub

Enfin il y a peut être plus court, mais cela évite déjà d'avoir 2 subs.

signaler à un administrateur
Commentaire de PCPT le 30/07/2008 15:39:44 administrateur CS

j'aurais peut-être plus vu quelque chose de ce genre :

    Private Sub btnarret_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnarret.Click, btnstop.Click
        Dim oTimer As Timer = IIf(sender.name.ToString = "btnarret", tmrAnimation, tmrImage)
        oTimer.Enabled = Not oTimer.Enabled
        sender.Text = IIf(oTimer.Enabled, "&Stop", "&Start")
        oTimer = Nothing
    End Sub


après y'a pas non plus besoin de 2 timers, ni même réellement de le désactiver en fait...

enfin bon, tel quel au moins on voit bien les 2 modes de fonctionnement
je maintiens que çà me semble très léger... :(

ps : normal que GR ne soit pas détruit/libéré?

signaler à un administrateur
Commentaire de Le Pivert le 30/07/2008 15:50:03

Le but de cette source est bien sur de voir les deux modes de fonctionnement. Il est bien évident qu'en l'état elle ne sera jamais utilisée.
Merci à vous deux de votre intérêt pour une si petite source.
@+

signaler à un administrateur
Commentaire de Le Pivert le 09/08/2008 14:43:07

Comme la source me paraissait légère j'ai ajouté une animation dans un bouton en me servant des données existantes, rien de bien sorcier, mais qui peut intéresser certaines personnes.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

ImageList et PictureBox [ par kpfeu ] Bonjour, j'ai vraiement bessoin de votre aide.J'ai un controle ImageList dans lequel sont définit 4 images. Et j'aimerais afficher l'image de mon Imag graphics et timer [ par yffick ] Bonjour,j'ai besoin d'aide en vb.netDans un evenement tick d'un timer je cree un graphics g et je voudrais dessiner un rectangle r qui se reaffichent ImageList et ListView [ par RL ] Bonjour,Mon Pb est le suivant:Dans un formulaire d'essai j'ai placé un ctrl ListView, un ctrl ImageList, un ctrl PictureBox et j'écécute le code suiva ImageList et picturebox! [ par Seth77 ] Slu comment faire pour afficher dans une picturebox une image qui est dans une imagelist ? merci d avance !Herve Prb fluidité d'une animation dans une picturebox [ par daddycool76 ] Bonjour, J'ai dans une picturebox des objets (circle, line et text) que l'utilisateur peut déplacer lorsqu'il clic dessus.Le code est un peu bourrin : Comment simplifier mon code? [ par athlon64 ] Bonjour,Je suis débutant en vb6 et je me retrouve bloqué dans l'avancement de mon projet parce que je ne sais pas comment simplifier mon code.je vais Besoin d'aide: pictureBox versus VBA + imageList [ par Menhir ] SalutQuelqu'un peut m'aider??? Je programme avec Access 2000 en VBA et je désire faire afficher dans mon formulaire des images à partir d'un imageList VB9:Comparer 2 Images de PictureBox et ImageList [ par Paounet ] Bonjour à tous..... VB9: Depuis x temps je bute sur la comparaison entre 2 images: Les 2 images ont le même formatUne provenant d'un controle Pictur animation, timer [ par wahidov2000 ] bonjour ,je veux juste savoir comment faire pour qu'un timer soit toujours en execution (pas d'interuption)car j'utilise des bases de donnée de grande


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode