|
[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 574 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.
|
| |
| |
| | | |
|
| | |
| |
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. |
| |
| |
| | | |
|
| | | | |
| | |
|