Déplacement aléatoire d'une PictureBox dans une Form

Résolu
gege1505 Messages postés 54 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 7 août 2012 - 16 déc. 2011 à 18:46
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 19 déc. 2011 à 21:11
Bonjour, je cherche depuis longtemps à faire déplacer une pictureBox de manière aléatoire dans une Form, j'ai posé plein de questions, sur plein de forum différent, mais à chaque fois l'aide apporté n'était pas constructive.

J'ai déjà le Timer, et je voudrais que toutes les 30 secondes par exemple, la PictureBox soit redessinée, à un autre endroit (une autre position aléatoire) dans ma fenêtre.

Si quelqu'un à une idée, parce qu'en théorie ça me semble plutôt facile, mais là je sèche, à chaque fois que je corrige un problème, un autre survient.

Merci beaucoup.

59 réponses

Utilisateur anonyme
18 déc. 2011 à 21:41
Oui, de toute façon le demandeur est absent et d'après ce que j'ai lu il a compris le principe.




CF2i - Guadeloupe
Ingénierie Informatique
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
18 déc. 2011 à 22:14
Voyons voyons ...
Ce n'est pas là de la "trigonométrie", mais juste de l'algèbre
On a deux points (x1,y1) et x2,y2) où, par définition , x1, y1, x2 et y2 sont des valeurs onnues.
Ils sont tous deux sur une droite (celle qui les relie) l'équation linéaire y = ax + b
On a donc un système de deux équations linéaires
y1 = ax1 + b
et
y2 = ax2 + b
où ce qui est en noir est connu et où ce qui est en rouge est à déterminer.
Cette détermination, tant du coefficient a que de la constante b se fait simplement par la résolution (niveau 5ème) du système de deux équations à deux inconnues (a et b) ci-dessus.
On connait dès lors l'équation linéaire de la droite reliant nos deux points :
elle est :
y = ax + b
où, maintenant, a et b sont des valeurs connues (constantes)
Il nous suffit de faire, à notre choix, varier les variables x ou y pour connaître la valeur de l'autre inconnue (y si l'on fait varier x ou x si l'on fait varier y).
On obtient donc par exemple pour une série de x, les valeurs correspondantes de y, c'est à dire tout bêtement les coordonnées des points successifs dur la droite reliant nos deux points limites.
C'est dur, çà ?
Je ne le crois pas ! et c'est d'autant plus facile, que tout se trouve dans le lien que j'ai donné plus haut . "Yapluka"


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ehjoe Messages postés 728 Date d'inscription samedi 4 avril 2009 Statut Membre Dernière intervention 30 mars 2014 4
18 déc. 2011 à 22:44
J'ai eu de longue discussions sur l'ancien forum vb6 avec ça, car en théorie on a bien une droite, mais en pratique ta droite exceptés quatre cas, ne peut qu'être tordu car en la mettant dans les pixels, c'est comme si tu faisais passe un manche à balai dans un labyrinthe sans le tordre, impossible...

Bonne nuit
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
18 déc. 2011 à 22:52
Bonsoir

juste de ne pas oublier sur la form le sens
posistif d'y est vers le bas
contrairement sur la feuille c'est vers le haut
donc si j'ai

                    (200,0)
                    /
                   /   
                  /
                 /
          (0,200)


ce qui donne y = -x+200
mais sur la feuille y = -x+200 donne plutot
      y
      | (0,200)
      |\ 
      | \
      |  \
______|___\____________ x
           (200,0)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
18 déc. 2011 à 22:54
Re:
Dans le cas du tracé d'une ligne c'est sur qu'on va apercevoir un effet "d'escalier" à l'écran.
Mais dans ce cas concret il s'agit du déplacement d'une picturebox et on ne va pas s'apercevoir visuellement (ou très peu).

Un très bon exemple en VB6 de dabala concernant les droites avec l'affichage des équations et tout:

http://www.vbfrance.com/codes/EQUATION-TRACER_43440.aspx



CF2i - Guadeloupe
Ingénierie Informatique
0
gege1505 Messages postés 54 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 7 août 2012
18 déc. 2011 à 23:01
Merci, pour vos réponses, mais pas besoin de me donner tout le code, de l'aide aurait suffit, surtout que j'y était presque, depuis 2-3h je suis sur un autre problème maintenant, mais vous devez vous en douter, je pense que ce genre de question est posé très couramment.

Mon image est un gif, avec un fond en transparence, donc, actuellement à chaque fois que l'image se redessine, le fond change, mais pas de suite, c'est donc très laid. Je cherche un moyen de remédié à cela.

Merci, à tous, bonne soirée.
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
18 déc. 2011 à 23:12
Bonsoir
Envois plutot un nouveau post si c'est
un nouveau sujet
0
gege1505 Messages postés 54 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 7 août 2012
18 déc. 2011 à 23:22
Non ce n'est pas un nouveau sujet, c'est juste améliorer celui-ci, en gros quand le fond de ma PictureBox se redessine, au début elle garde le fond, de l'image de fond de ma Form, où elle se trouvée avant de changer de position. Elle met du temps à se redessiner correctement.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
18 déc. 2011 à 23:35
Re coucou, gege1505,

Si tu en es là, c'est, je pense, que tu as assimilé la première étape.
Mais avant même de traiter ce problème (par un double buffering), tu en as bien d'autres à traiter à mon avis. Et étape par étape. Et pour ce seul problème de déplacement, à ce niveau.
Si tu veux qu'on en parle, dis-moi (et tu verras l'avalanche ). Je suis prêt à rajeunir d'environ 17 années et à te livrer, pas à pas, les différents casse-têtes qu'il m'a bien fallu, à l'époque, résoudre. Je ne donnerai aucun code. Je te guiderai pas à pas pour que tu écrives le tien en parfaite connaissance de cause.
Tu dis (mais je te préviens : il va te falloir pas mal d'opiniâtreté)


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
gege1505 Messages postés 54 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 7 août 2012
18 déc. 2011 à 23:45
Ben j'avais 2 problèmes, un vous l'avez tous résolu, en me postant vos codes, et le 2éme, c'est que l'abscisse et l'ordonnée de déplacement de l'image étant tout le temps identique (fallait initialiser le random) et ça c'est done aussi.
Maintenant je voudrais bien savoir comment faire pour que seul mon image se redessine correctement, et que son fond qui est transparent, le reste ^^

Merci, en tout cas de m'apporter autant d'attention.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
18 déc. 2011 à 23:56
Non, tu en as un autre (et il 'est pas le seul) plus fondamental à régler auparavant : celui de la vitesse constante de déplacement (et même dan le cas le plus simple, que l'on va seul considérer à ce niveau : celui d'une vue à la perpendiculaire d'un plan, en imaginant ue tu en sois suffisamment éloigné pour que l'on puisse - c'est plus simple - considérer que tu es à la perpendiculaire de chacun des points de ton écran).
Même dans ce cas beaucoup plus simple, tu ne peux faire avancer ton image à vitesse à peu près constante en jouant sur x ou sur y. La vitesse de parcours sera, par exemple en faisant varier progresser l'abscisse, très différente selon l'inclinaison du chemin sur ton écran.
Tu atténueras cet effet ainsi :
en choisissant de faire progresser l'abscisse ou l'ordonnée selon que la différence entre les deux abscisses est la plus grande ou que la différence entre les deux ordonnées est la plus grande.
Assimile cela et on continue sur cette modération du déplacement.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
gege1505 Messages postés 54 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 7 août 2012
19 déc. 2011 à 00:02
Je ne veux pas paraître désintéressé, mais cela m’importe peu, la façon dont bouge mon image me convient parfaitement, et au pire si cela viendrait à changer je ferais un random pour le tick du timer aussi entre la détermination du déplacement de l'abscisse et celui de l'ordonnée.

Là ce que je veux vraiment arriver à résoudre, c'est ce que je vous ai expliqué plus haut, mon image se redessine pas comme je le voudrais, et ce n'est vraiment pas très propre à l'écran.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
19 déc. 2011 à 00:08
Relis moi plus haut : je t'y ai donné le terme : Double Buffering
C'est avec ce mot, que tu trouveras ta solution sur le Web


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
gege1505 Messages postés 54 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 7 août 2012
19 déc. 2011 à 00:21
Très bien merci, ça n'a pas l'air facile...
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
19 déc. 2011 à 00:25
C'est moins difficile avec VB.Net (tu développes bien sous Net ?)
Commence par cette lecture


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
gege1505 Messages postés 54 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 7 août 2012
19 déc. 2011 à 00:28
Oui avec VS 2010, oui.
Ouais je vais chercher de la doc et lire tout ça, merci.
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
19 déc. 2011 à 08:11
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
19 déc. 2011 à 08:27
Bien, ShawW, de le lui avoir trouvé ainsi expliqué et en français


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
19 déc. 2011 à 11:55
Bon,
je suis en train de m'amuser un peu avec les équations, juste pour me rafraichir la mémoire et traiter les cas particuliers.
Je pense que je déposerai tout-à-l'heure un petit source/démo pour montrer comment on doit s'y prendre pour que ces déplacements soient gérés dans tous les sens et sans de grandes variations (selon l'inclinaison) de la vitesse de déplacement.
Dans ce source, je ne traiterai que le problème du déplacement en soi (l'utilisation de l'algèbre) sans me "perdre" (c'est un autre sujet) dans le "double buffering".
Je développe sous VB6 et ce source ne sera donc pas du VB.Net, mais il est écrit de telle manière que sa transposition en VB.Net devrait être un jeu d'enfant.
A plus, donc.

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
19 déc. 2011 à 13:38
Voilà qui est maintenant fait I C I
Je pense avoir simplifié au maximum pour que chacun puisse s'y "retrouver" assez facilement.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Rejoignez-nous