PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV (précédentes versions) → [WD20] glisser/déplacer sur une image
[WD20] glisser/déplacer sur une image
Débuté par Maxell, 31 mar. 2017 08:57 - 10 réponses
Posté le 31 mars 2017 - 08:57
bonjour a tous,

Pour un projet professionnel, je dois mettre en place une interface pour que mes collègues puissent dessiner un croquis et y placer différent élément.

A partir de cet application, l'utilisateur final doit pouvoir dessiner les rive d'un cours d'eau, et y placer des éléments.

Le tracer des rives fonctionne ainsi que de prendre dans une librairie proposé par l'application des images pour les positionner sur le croquis.

Ce que je cherche à faire, c'est une fois que l'utilisateur à déposer une image dans la zone de dessin qu'il puisse la déplacer, pour repositionner l'image dans un autre endroit du dessin. auriez-vous des pistes de réflexion à me donner pour pouvoir mettre en place le glisser / déplacer sur l'image final elle-même

Je vous remercie pour votre aide et vos conseilles
Posté le 31 mars 2017 - 13:56
Bonjour

j'utiliserais un deuxième champ image placé sur le premier. Le drag and
drop sur ce champ permettrait de le déplacer à volonté, il serait aussi
possible d'avoir des poignées placées sur ce champ pour le redimensionner.

Une fois à la bonne place/dimension, un dcopyimage fait le reste

Cordialement


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

A votre disposition : WXShowroom.com, WXReplication (open source) et
maintenant WXEDM (open source)

Plus d'information sur http://fabriceharari.com


Le 3/31/2017 à 12:57 AM, Maxell a écrit :
bonjour a tous,
Pour un projet professionnel, je dois mettre en place une interface pour
que mes collègues puissent dessiner un croquis et y placer différent
élément.

A partir de cet application, l'utilisateur final doit pouvoir dessiner
les rive d'un cours d'eau, et y placer des éléments.

Le tracer des rives fonctionne ainsi que de prendre dans une librairie
proposé par l'application des images pour les positionner sur le croquis.

Ce que je cherche à faire, c'est une fois que l'utilisateur à déposer
une image dans la zone de dessin qu'il puisse la déplacer, pour
repositionner l'image dans un autre endroit du dessin. auriez-vous des
pistes de réflexion à me donner pour pouvoir mettre en place le glisser
/ déplacer sur l'image final elle-même
Je vous remercie pour votre aide et vos conseilles
Posté le 03 avril 2017 - 10:45
Bonjour,

Merci pour votre réponse.

Par contre je ne vois pas comment procéder, lorsque je lâche l'image je n'arrive plus à la sélectionner.
Membre enregistré
2 566 messages
Popularité : +222 (260 votes)
Posté le 03 avril 2017 - 18:18
Bonjour,

Tu peux gérer les évènements de survol de l'objet image que tu dropes , changer le cadre de l'image pour avoir un cadre en pointillé lorsque tu le survoles, puis tu gères le clique sur l'objet et le déplacement sur x et y.

Je ne sais pas si j'ai été très clair mais bon...
Posté le 04 avril 2017 - 08:49
oui c'est un peu plus clair merci.
C'est surtout que je ne maîtrise pas trop le drag & drop c'est des nouvelles fonctionnalité que je tente de mettre en place.
:p
Posté le 06 avril 2017 - 09:51
bonjour,

Il me semble qu'après avoir "lâcher" l'objet image dans la zone cible, les 2 éléments fusionnent entre eux, et je n'arrive pas a sélectionner un élément déplacer.

Dans ma procédure de lâcher j'ai ceci
Procedure Lacher()
DnDRécupère(CF_BITMAP)

dCopieImage(_DND.ChampSource,_DND.ChampCible,copieSrcEt,gvcSourisDepart.x,gvcSourisDepart.y,gnHauteurImage,gnLargeurImage,SourisPosX()-(gnLargeurImage/2),SourisPosY()-(gnHauteurImage/2),gnHauteurImage,gnLargeurImage)
Membre enregistré
58 messages
Posté le 06 avril 2017 - 10:22
Bonjour,

J'ai justement développé ce genre d'appli : déposer des images sur un fond et les superposées, déplacer l'ensemble (le fond et les images), ou déplacer les images individuellement, etc...
Voilà des bouts de code qui pourront sans doute t'être utile :

// Création d'un champ image
ch <- ChampCrée(sNomChamp,typImage,SourisPosX(),SourisPosY(),0,0,Vrai)
sNomFichier = ComplèteRep(fRepExe()) + psNomImageSource
// Récupérer l'image dans un fichier, extraire le "mémo" et l'affecter au champ image :
SI HLitRecherche(Images,ID,pnIdImage,hRespecteFiltre) ALORS
SI HTrouve() ALORS
ch..Largeur = Images.Largeur
ch..Hauteur = Images.Hauteur
SI HExtraitMémo(Images,Image,sNomFichier) ALORS
ch..Valeur = sNomFichier
FIN
// S'assurer que la nouvelle image soit visible : placée au dessus du fond
ch..Altitude = 10 // pour l'exemple, mais à gérer en fonction de ton cas
FIN
FIN

ch.PosX = SourisPosX()
ch.PosY = SourisPosY()

// Lui attribuer les traitements pour gérer les déplacements
ch..Traitement[trtBoutonGaucheEnfoncé] = PrendreObjet
ch..Traitement[trtBoutonGaucheRelâché] = RelacherObjet

PrendreObjet :
(...)
// Gérer les déplacements de la souris sur l'image sélectionnée (mais que si le bouton gauche est enfoncé !). A chaque mouvement de souris, on appelle la fonction DeplacerObjet
SI ToucheEnfoncée(teBoutonG) ALORS
// Gérer les événements de déplacement de la souris/du doigt
// IdEvenement doit être une variable globale, on s'en servira quand on lâchera la souris
IdEvenement = Evénement(DeplacerObjet,MoiMême..Nom,512) // 512 = événement WM_MOUSEMOVE
FIN


DéplacerObjet :
(...)
SI ToucheEnfoncée(teBoutonG) ALORS
// Déplacer le champ sNomChamp
{sNomChamp, indChamp}..X = (SourisPosX())
{sNomChamp, indChamp}..Y = (SourisPosY())

FenRepeint()
FIN


RelacherObjet() :
// Arrêter de déplacer l'image si le bouton gauche de la souris n'est plus appuyé
FinEvénement(IdEvenement)


Bons développements !
Posté le 06 avril 2017 - 13:59
Bonjour Maxell,


Le 4/6/2017 à 1:51 AM, Maxell a écrit :
bonjour,
Il me semble qu'après avoir "lâcher" l'objet image dans la zone cible,


Ce n'est pas "il me semble" c'est "j'ai écrit un code qui fusionne les 2"

Il ne fait pas faire un docopieimage si tu ne veux pas copier l'image
(ce qui est ce que tu nous explique)

Il faut DEPLACER l'image d'origine, à la place

Cordialement


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

A votre disposition : WXShowroom.com, WXReplication (open source) et
maintenant WXEDM (open source)

Plus d'information sur http://fabriceharari.com

les 2 éléments fusionnent entre eux, et je n'arrive pas a sélectionner
un élément déplacer.

Dans ma procédure de lâcher j'ai ceci
PROCEDURE Lacher()
DnDRécupère(CF_BITMAP)

dCopieImage(_DND.ChampSource,_DND.ChampCible,copieSrcEt,gvcSourisDepart.x,gvcSourisDepart.y,gnHauteurImage,gnLargeurImage,SourisPosX()-(gnLargeurImage/2),SourisPosY()-(gnHauteurImage/2),gnHauteurImage,gnLargeurImage)
Posté le 06 avril 2017 - 14:01
et pour être plus précis, il semblerait que ton problème vienne du fait
que tu confond le CHAMP image, et l'image qu'il CONTIENT..

Un champ, tu peux le déplacer, changer sa taille, etc
Son contenu, tu peux le traiter (dans ce cas avec dcopieimage, qui copie
le contenu dans le contenu, pas le champ lui même)

Cordialement


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

A votre disposition : WXShowroom.com, WXReplication (open source) et
maintenant WXEDM (open source)

Plus d'information sur http://fabriceharari.com


Le 4/6/2017 à 1:51 AM, Maxell a écrit :
bonjour,
Il me semble qu'après avoir "lâcher" l'objet image dans la zone cible,
les 2 éléments fusionnent entre eux, et je n'arrive pas a sélectionner
un élément déplacer.

Dans ma procédure de lâcher j'ai ceci
PROCEDURE Lacher()
DnDRécupère(CF_BITMAP)

dCopieImage(_DND.ChampSource,_DND.ChampCible,copieSrcEt,gvcSourisDepart.x,gvcSourisDepart.y,gnHauteurImage,gnLargeurImage,SourisPosX()-(gnLargeurImage/2),SourisPosY()-(gnHauteurImage/2),gnHauteurImage,gnLargeurImage)
Posté le 21 mars 2019 - 13:20
bonjour

je réveille ce vieux post
Maxell as tu reussi ?

merci
Posté le 16 septembre 2019 - 11:54
Bonjour à tous,
Moi aussi je réveille ce post pour savoir si il est possible de gérer un fond transparent pour le champ image que l'on désire manipuler.

Cordialement et merci à tous.