Déplacement d'un objet [Résolu]

Messages postés
22
Date d'inscription
vendredi 29 avril 2011
Dernière intervention
13 septembre 2011
- 31 août 2011 à 15:06 - Dernière réponse :
Messages postés
22
Date d'inscription
vendredi 29 avril 2011
Dernière intervention
13 septembre 2011
- 1 sept. 2011 à 08:22
Bonjour,
Ma question n'est pas pour un example concret mais d'ordre général:
J'ai chercher sur google , sur des forums ... sans raisultat
Je cherche a faire bouger automatiquement un objet ( genre picturebox ou un label ext ... ) je m'explique :
Par example j'ouvre une form et la j'aimerais que la picture box présent bouge de droit a gauche automatiquement ou sinon quelle décrive un cercle...
Peut etre faut il rentrer des points et dire : cette picturebox va en x;y(en rentrant la vitesse de deplacement) puit quand tu es a ce point tu va z;p ou sinon tu va la en passant par ces points.
J'espere d'avoir été le plus claire possible car ce n'est pas forcement toujours facile de se faire comprendre

merci d'avance




VIVE Visual Basic
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
2117
Date d'inscription
lundi 11 avril 2005
Dernière intervention
14 mars 2016
31 août 2011 à 20:17
3
Merci
Bonsoir,

Voici un code de base :

Met 2 boutons et une pictureBox avec le borderStyle en trait continu pour le voir

Ensuite le code :
Public Class Form1

    ' Variables globales
    Dim LocationX As Integer
    Dim LocationY As Integer

    ' Utilise le Timer1 pour incrémenter les propriétés de pictureBox1
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

        LocationX += 1
        LocationY += 1
        PictureBox1.Top = LocationX
        PictureBox1.Left = LocationY

        If LocationX 100 Then Timer1.Enabled False

    End Sub

    ' Arrêter l'animation
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Timer1.Enabled = False
    End Sub

    ' Démarre l'animation
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Timer1.Enabled = True
    End Sub

End Class


Amicalement,
Us.

Merci us_30 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de us_30
Meilleure réponse
Messages postés
2117
Date d'inscription
lundi 11 avril 2005
Dernière intervention
14 mars 2016
31 août 2011 à 22:50
3
Merci
Re,

Une version un peu plus élaborée, comme je vais en avoir besoin :

Public Class Form1

    ' Variables globales
    Dim Objet As Control
    Dim X As Integer
    Dim Y As Integer
    Dim Xd As Integer
    Dim Yd As Integer
    Dim Xf As Integer
    Dim Yf As Integer

    ' Utilise le Timer1 pour incrémenter les propriétés de pictureBox1
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

        ' Paramètres
        Dim a As Double
        Dim b As Double

        ' Equation de droite
        a = (Yd - Yf) / (Xd - Xf)
        b = Yf - a * Xf

        ' Incrémentation
        X += 2 ' pas du décalage
        If X 1 Then X Xd
        Y = a * X + b

        ' Fin du déplacement au point d'arrivé
        If X > Xf Then
            Timer1.Enabled = False
            Exit Sub
        End If

        ' Déplacement
        Objet.Top = X
        Objet.Left = Y

    End Sub

    ' Arrêter/Reprend l'animation
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Timer1.Enabled (Timer1.Enabled False)
    End Sub

    ' Démarre l'animation
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        ' Défini objet et position
        Objet = PictureBox1
        Xd = 12
        Yd = 12
        Xf = 100
        Yf = 300
        X = Xd
        Y = Yd

        ' lance l'animation
        Timer1.Interval = 10
        Timer1.Enabled = True

    End Sub

End Class


Peut-être que les pros du VB.Net peuvent-ils faire encore mieux ? Un conseil ?

Amicalement,
Us.

Merci us_30 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de us_30
Meilleure réponse
1 sept. 2011 à 00:28
3
Merci
En rajoutant un autre bouton et un autre timer on fait tourner :
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        Timer2.Interval = 100
        Timer2.Enabled = True
    End Sub

    Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
        Angle += 1
        X = Convert.ToInt32(100 * Math.Cos((Math.PI * Angle) / 180))
        Y = Convert.ToInt32(100 * Math.Sin((Math.PI * Angle) / 180))
        PictureBox1.Location = New Point(X + 100, Y + 100)
    End Sub

Bonne nuit :)

Merci Utilisateur anonyme 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de Utilisateur anonyme
Messages postés
14301
Date d'inscription
vendredi 14 mars 2003
Dernière intervention
20 novembre 2018
31 août 2011 à 18:28
0
Merci
Bonjour,

Les propriétés Top et Left du contrôle ne te suffisent pas ?
Un Timer et l'affaire est réglée.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
Commenter la réponse de NHenry
31 août 2011 à 19:24
0
Merci
Bonsoir,
Pour déplacer linéairement, il te suffit de revoir tes cours de 5eme sur les fonctions affines :

En faisant varier x, tu obtient y.

Pour les cercles c'est dans tes cours de 6eme.

Où p est le rayon et téta l'angle.
Il te suffit de faire varier l'angle pour trouver x et y.

Ensuite comme l'a dit NHenry, sers toi des propriétés Top et Left du contrôle ou de la propriété Location.

Bonne soirée.
Commenter la réponse de Utilisateur anonyme
Messages postés
22
Date d'inscription
vendredi 29 avril 2011
Dernière intervention
13 septembre 2011
31 août 2011 à 20:07
0
Merci
bonsoir,
merci de vos reponses
je suis encors qu'un novice en vb du coup je ne maitrise pas tout a fait la syntaxe
j'essaierai demain en integrant vos conseils .
c'est sympas d'aider les autres, merci

VIVE Visual Basic
Commenter la réponse de fabman21
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
31 août 2011 à 20:13
0
Merci
bonjour,
il me semble que l'essentiel t'a été dit (et cet essentiel est la connaissance des mathématiques, pas de VB).
Pour le reste (la syntaxe VB) : ouvre ton aide en ligne sur les opérateurs et fonctions mathématiques


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne intallée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
22
Date d'inscription
vendredi 29 avril 2011
Dernière intervention
13 septembre 2011
1 sept. 2011 à 08:22
0
Merci
merci beaucoup


VIVE Visual Basic
Commenter la réponse de fabman21

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.