gege1505
Messages postés54Date d'inscriptionlundi 2 novembre 2009StatutMembreDernière intervention 7 août 2012
-
16 déc. 2011 à 18:46
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 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.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 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
ehjoe
Messages postés728Date d'inscriptionsamedi 4 avril 2009StatutMembreDernière intervention30 mars 20144 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...
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:
gege1505
Messages postés54Date d'inscriptionlundi 2 novembre 2009StatutMembreDerniè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.
gege1505
Messages postés54Date d'inscriptionlundi 2 novembre 2009StatutMembreDerniè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.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 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
gege1505
Messages postés54Date d'inscriptionlundi 2 novembre 2009StatutMembreDerniè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.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 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
gege1505
Messages postés54Date d'inscriptionlundi 2 novembre 2009StatutMembreDerniè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.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 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
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 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
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 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
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 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
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 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