none
animation de pictureboxes sur picturebox RRS feed

  • Question

  • bonjours,

    suite à une intervention passée sur le forum, j'ai vu comment faire une animation avec un Timer et en faisant ce déplacer des pictureboxes au rythme voulu... tout va bien pendant une part de temps de mon programme mes quand mon déplacement picturebox.left=x et commandez depuis une boucle for plus rapide même suivi d'un sleep ça laisse des traces de pictureboxes .

    le code peut se voir comme cela, l'effet est le même

    Imports System.Threading
    
    Public Class Form1
        Dim xj2, xj3 As Double
        Private Sub form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
    
            Timer1.Enabled = True
            Timer1.Interval = 1
    
        End Sub
    
        Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    
            Call form1()
    
    'picturebox1 est mon terrain
            PictureBox2.Left = xj2 * 10
            Thread.sleep(10)
    
        End Sub
        Sub form1()
            xj2 = xj2 + 1
            For xj4 = 1 To 10
                PictureBox3.Left = xj4 * 10
                Thread.Sleep(1000)
            Next
    
        End Sub
    End Class

    comment arriver à faire apparaître qu'une seule position de mes picturebox sans qu'il y est comme une persistance ou je ne sais quoi.

    J'ai essayais en faisant une fonxtion appeler dans la boucle for, puis en dessinant dans un bmp et en n'en faisant limage de mon picturebox terrain

    mes là rien ne s'affiche. Avez-vous une solution?


    • Type modifié Aurel Bera mardi 16 octobre 2012 06:43 Pas de reponse
    • Modifié Galibert dimanche 21 octobre 2012 20:12
    • Type modifié Galibert lundi 29 octobre 2012 20:00
    • Type modifié Galibert lundi 29 octobre 2012 20:00
    • Type modifié Galibert lundi 29 octobre 2012 20:19
    • Type modifié Galibert lundi 29 octobre 2012 20:23
    • Type modifié Galibert lundi 29 octobre 2012 20:29
    mercredi 10 octobre 2012 17:53

Réponses

  • bonjours,

    suite à une intervention passée sur le forum, j'ai vu comment faire une animation avec un Timer et en faisant ce déplacer des pictureboxes au rythme voulu... tout va bien pendant une part de temps de mon programme mes quand mon déplacement picturebox.left=x et commandez depuis une boucle for plus rapide même suivi d'un sleep ça laisse des traces de pictureboxes .

    normalement y'a qu'un picturebox carrée par numéro:

    

    et ça donne ça

    le code peut se voir comme cela, l'effet est le même

    Imports System.Threading
    
    Public Class Form1
        Dim xj2, xj3 As Double
        Private Sub form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
    
            Timer1.Enabled = True
            Timer1.Interval = 1
    
        End Sub
    
        Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    
            Call form1()
    
    'picturebox1 est mon terrain
            PictureBox2.Left = xj2 * 10
            Thread.sleep(10)
    
        End Sub
        Sub form1()
            xj2 = xj2 + 1
            For xj4 = 1 To 10
                PictureBox3.Left = xj4 * 10
                Thread.Sleep(1000)
            Next
    
        End Sub
    End Class

    comment arriver à faire apparaître qu'une seule position de mes picturebox sans qu'il y est comme une persistance ou je ne sais quoi.

    J'ai essayais en faisant une fonxtion appeler dans la boucle for, puis en dessinant dans un bmp et en n'en faisant limage de mon picturebox terrain

    mes là rien ne s'affiche. Avez-vous une solution?

    Bonjour que donne le refresh sur le form ou le conteneur d'images ? Si vous souhaitez quelque chose de mieux, dessinez avec GDI+ au lieu d'utiliser des contrôles à positionner.

    http://www.codeproject.com/Articles/4659/Introduction-to-GDI-in-NET

    http://www.vbdotnetheaven.com/UploadFile/mahesh/GdiPlusBiggeners04272005015358AM/GdiPlusBiggeners.aspx

     

    Cordialement


    Merci de valider par "Proposer comme réponse" si celle-ci répond à votre demande !

    • Marqué comme réponse Aurel Bera jeudi 1 novembre 2012 14:55
    mercredi 10 octobre 2012 21:54

Toutes les réponses