Déplacer une image à la souris [résolu !] [VB] - VB/VBA/VBS - Programmation
Marsh Posté le 30-06-2003 à 15:20:28
ReplyMarsh Posté le 30-06-2003 à 16:44:25
Y'a pas un truc AutoRedraw en VB ?
VB je connais mal. Une solution 100% VB je sais pas.
Mais sinon y'a des solutions, sans passer par DirectX.
Il va surement falloir te gérer les bitmap (=> GDI, blit, ...) toi même et non pas utiliser un composant tout pret.
Marsh Posté le 30-06-2003 à 18:36:41
je regarde du coté des api BitBlt et StretchBlt, qui semblent pouvoir convenir dans mon cas, mais ça m'a l'air un tantinet ardu à utiliser
enfin après tout, stune bonne occasion d'apprendre
Marsh Posté le 03-07-2003 à 10:35:14
Si j'y pense ce soir, faut que je regarde dans VB3, doit y avoir un exemple livré avec, ou du moins un exemple externe à Krosoft, c'est "vieux".
En essayant de changer l'attribut AutoRedraw des boutons (ou que certains), contrôles survolés, ça change qq chose ?
Imposer les coordonnées (.x = , .top = , etc..) au lieu de faire un move, je sais plus si ça change le comportement Windowsien ?
Marsh Posté le 03-07-2003 à 10:36:53
Y'a aussi l'attribut clipchildren ou je sais plus quoi à voir non ?
Fait des recherches avec le mot clé "flickering"
Marsh Posté le 03-07-2003 à 20:46:44
CARBON_14 a écrit : Si j'y pense ce soir, faut que je regarde dans VB3, doit y avoir un exemple livré avec, ou du moins un exemple externe à Krosoft, c'est "vieux". |
Autoredraw ne change pas grand chose J'ai aussi tenté d'imposer les coordonées, mais c'est presque pire que Move (qui est a mon avis plus rapide car elle regroupe deux déplacements en une seule fonction). Si tu retrouve ton exemple je suis preneur
Je vais faire des recherches du coté de clipchildren et flickering ; merci pour vos réponses
Marsh Posté le 03-07-2003 à 22:34:59
Ai pas encore trouvé ce que je voulais mais avais un exemple avec API BilBlt et masque négatif etc.. Faudrait que je regarde comment ça pourrait s'adapter (pas totalement adapté, PictureBox). Dans un vieux PC Expert y avait méthode pour déplacer un poisson sur un fond quelconque, mais code C incomplet.
Sous VB3, bouger une PictureBox avec le code indiqué fonctionne à la perfection ! Mais une Image, ça cafouille (redessiné pas assez vite, moche). PC 486/100MHz, ss Win 3.11.
Ai écrit un truc pour déplacer du texte en C, faut que je regarde comment je faisais pour transposer. Si rien trouvé entre temps, je m'y replonge.
Ca ne serait pas possibler de mettre l'image dans une PictureBox (si ça existe encore dans les VB modernes), ça aiderait .
Marsh Posté le 03-07-2003 à 23:08:24
tiens, je vais en effet tout de suite tester le coup de la picturebox : ce serait en effet une solution rapide et pratique...
Si ça ne marche pas, et qu'il esxiste dans d'autres langages des fonctions permettant de faire ça, je suis prenneur par contre pour intégrer ça au programme en vb, je ne sais pas si c'est façilement faisable...
Merci pour ton aide
Marsh Posté le 03-07-2003 à 23:12:38
Miraculeux ! Ca marche en effet a la perfection avec la pictureBox. En fait je n'avais pas pensé a l'utiliser, car d'après ce que j'ai compris, ce composant utilise un peu plus de ressources que l'image. Cependant, puisque ça marche avec la PictureBox, je ne vais pas m'en priver
Un grand merci !
Marsh Posté le 04-07-2003 à 08:44:44
Quad on regarde de près, une Image, en VB3 du moins, c'est "rien", juste les coordonnées d'une image qui y est "collée". Un emplacement géographique en fait.
Une PictureBox, c'est plus sophistiqué, c'est un conteneur à image (BMP, WMF, ..) qui a un mode de dessin, qui peut être réduite ou agrandie pour resizer son contenu, etc... Quand on la déplace, elle gère elle-même son contenu (avec les 4 BitBlt() de l'exemple de PC Expert).
Marsh Posté le 30-06-2003 à 12:43:11
Bonjour !
Dans un petit programme, j'aimerai qu'on puisse déplacer une image avec la souris, un peu comme un glisser-déposer. J'ai mis en dessous le code que j'utilise. Cependant cette méthode a pour inconvénient de faire clignoter l'image quand elle passe par dessus d'autres contrôles, car elle est sans cesse redessinée.
J'ai fait des recherches du coté de DragDrop, mais lors du déplacement, seul le contour de l'image est affiché, alors que j'aimerai qu'on puisse voir son contenu.
Comment puis-je procéder autrement ?
Merci
Message édité par Gnub le 03-07-2003 à 23:12:59