Deplacer un picturebox

Résolu
monsieurlemouche Messages postés 102 Date d'inscription lundi 29 décembre 2003 Statut Membre Dernière intervention 28 juin 2007 - 6 juin 2007 à 04:17
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 - 6 juin 2007 à 16:17
salut,
je galère pas mal sur un truc.

je souhaite deplacer un picturebox enfant situé dans un picturebox parent. Sur ce picturebox enfant seront tracées plusieurs courbes,, axes, etc.

je souhaite pouvoir faire glisser l'image à la manière de photoshop, ou tout autre logiciel de qualité en cliquant glissant. Le problème est que je n'arrive pas à faire suivre l'image du picture. Il est facile de déplacer le picture en question sans que celui-ci ne suive la souris mais je ne trouve pas cela très esthétique.
J'ai cherché avec du subclassing en m'aidant de programmes que j'ai dans un bouquin mais là encore, l'image ne suit pas.
Le problème principal est qu'en repositionnant le picturebox à la volée (en redefinissant les propriétés top et left), on change l'origine du repere utilisé pour définir un point de départ et donc un déplacement. Le résultat est complètement erratique.
Comment dois-je m'y prendre?

monsieurlémouche

8 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
6 juin 2007 à 08:27
+1 pour jacques ! Moi non plus je vois pas le rapport avec le subclassing !

Je conseillerai plutôt que de déplacer un picturebox, au dessus d'un autre, ce qui est assez lent, de n'utiliser qu'un seul picturebox, et de tracer dessus l'image que tu veux et gérer le déplacement dans cet unique picturebox. Evite également le recourt à l'autoredraw si possible, qui est plus lent que si tu implémente une technique de double-bufferring un tant soit peu optimisée.

La technique consiste donc à tracer dans un buffer temporaire (qui peut être une picturebox invisible par exemple) l'image que tu veux afficher au final, en gérant la position de l'image à déplacer, puis de copier l'image du picturebox temporaire dans le picturebox visible. Ainsi tu n'as pas d'effet de scintillement désagréable, tu peux optimiser le tracé (ne tracer que ce qui est nécéssaire), et faire le design que tu veux.
3
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
6 juin 2007 à 07:53
Salut,

Rien de ce que tu expliques là n'est vraiment clair !
Si tu veux de l'aide, il va falloir que tu sois très précis sur ce que tu veux faire (avec détails ...) car je ne vois vraiment pas, s'il ne s'agit que tu déplacement à la souris d'une picturebox, ce qu'un sous-classement viendrait faire dans cette affaire !
0
monsieurlemouche Messages postés 102 Date d'inscription lundi 29 décembre 2003 Statut Membre Dernière intervention 28 juin 2007
6 juin 2007 à 09:08
salut,
merci pour vos réponses.

bon, j'en remets une couche.
premièrement: pourquoi le subclassing? bah, pour essayer. non, je blague mais c'est un peu cela. Le subclassing de fenetres (interception des messages windows, c'est bien cela?) me permets, à très peu de frais, de réaliser le redimensionnement et déplacements de controles en phase d'éxecution en traitant le message WM_NCHITTEST, mais comme expliqué dans le premier post, l'image ne suit pas la souris.
deuxièmement: je vais être plus clair. Je souhaite que ma pictureenfant suive la souris, tout simplement.

les conseils de Darksidious me semblent être de très bons conseils, et qui plus est, j'ai compris le principe. Je vais donc m'y coller dans la soirée... pas avant, car mercredi est le jour des enfants.

mercic à vous deux

monsieurlémouche
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
6 juin 2007 à 09:20
Euh....
Juste une question : les deux pictureboxes dont il s'agit sont bien des picturesboxes de TON apllication ?
0

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

Posez votre question
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
6 juin 2007 à 09:24
Oui le subclassing te permet de faire des choses plus poussées que ce que te permet vb de base, mais dans ce cas là (déplacement de picturebox), je vois pas trop l'intérêt (si ce n'est gagner quelques millisecondes pour l'interception des WM_MOUSE_MOVE, et encore !).

La technique du double-buffering est une technique classique dès que tu veux faire du graphisme pour avoir un rendu optimal tout en évitant les clignotements.
0
monsieurlemouche Messages postés 102 Date d'inscription lundi 29 décembre 2003 Statut Membre Dernière intervention 28 juin 2007
6 juin 2007 à 09:33
en réponse à jmfmarques,
oui les deux picturesboxes font partie de MON application.
et pour le coup, c'est moi qui ne comprends pas le sens de la question...
0
monsieurlemouche Messages postés 102 Date d'inscription lundi 29 décembre 2003 Statut Membre Dernière intervention 28 juin 2007
6 juin 2007 à 13:39
darksidious,
j'ai fait une recherche sur le site avec "double buffering", puis "buffering" mais je n'ai rien trouvé d'interressant. Je cherche des exemples de mise en oeuvre. As-tu une idée pour me lancer dans la bonne direction ?
Mots clefs à chercher ou sources que tu connaîtrais.

merci de ton aide

monsieurlémouche
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
6 juin 2007 à 16:17
regarde sur le site vbaccelerator.com : ils ont déposés une source très intéressante à ce sujet : la comparaison entre un double-buffering manuel et l'auto-redraw de vb (qui est un doublebuffer si on va par là).
0
Rejoignez-nous