[R] Drag Drop Image
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
- TommyDDR
- Modérateur

- Messages : 2116
- Enregistré le : mar. 22 juil. 2008 21:55
- Localisation : Nantes
- Status : Hors ligne
[R] Drag Drop Image
Bonjour,
Je suis sur un projet de puzzle sous autoit.
J'ai une fenêtre avec des images "GUICtrlCreatePic()" sur la gauche et une grille sur la droite, j'aimerai pouvoir faire un Drag&Drop des images vers la grille.
Est ce possible ?
(Si oui, comment ? Un style à ajouter ou autre ?)
Merci
Je suis sur un projet de puzzle sous autoit.
J'ai une fenêtre avec des images "GUICtrlCreatePic()" sur la gauche et une grille sur la droite, j'aimerai pouvoir faire un Drag&Drop des images vers la grille.
Est ce possible ?
(Si oui, comment ? Un style à ajouter ou autre ?)
Merci
Modifié en dernier par TommyDDR le jeu. 27 août 2009 17:08, modifié 1 fois.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
- Iste
- Niveau 11

- Messages : 1870
- Enregistré le : jeu. 04 déc. 2008 14:21
- Localisation : 76
- Status : Hors ligne
Re: [..] Drag Drop Image
Oui c'est possible. Il suffit de crée une GUI sans rien d'autre que l'image qui suit le curseur.
Tien, regarde ce magnifique script :p
http://www.autoitscript.fr/forum/viewto ... f=6&t=2045
Plus précisément le "Case _IsPressed(1) = 1"
Tien, regarde ce magnifique script :p
http://www.autoitscript.fr/forum/viewto ... f=6&t=2045
Plus précisément le "Case _IsPressed(1) = 1"
Signez ici
- TommyDDR
- Modérateur

- Messages : 2116
- Enregistré le : mar. 22 juil. 2008 21:55
- Localisation : Nantes
- Status : Hors ligne
Re: [..] Drag Drop Image
Désolé mais pour des raisons de sauvegarde je ne peux pas utilisé cette technique, il faut que cela se trouve dans la même fenêtre
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
- Iste
- Niveau 11

- Messages : 1870
- Enregistré le : jeu. 04 déc. 2008 14:21
- Localisation : 76
- Status : Hors ligne
Re: [..] Drag Drop Image
Ben, dans ce cas, suffit au lieux de créer une win et la déplacer, simplement supprimer l'image et la recréer (mais je reste persuadé que la solution proposée avant est meilleur, car moins lourde, et on évitera surement des clignotement. Par contre, ca demande plus de code bien sur.)
Je vais essayer de faire un exemple simple et j'edite
wala,
Et les images
Je vais essayer de faire un exemple simple et j'edite
wala,
Code : Tout sélectionner
#Include <Misc.au3>
#include <WindowsConstants.au3>
$gui = GUICreate("",500,500)
Global $pic[4]
For $i = 0 To 3
$pic[$i] = GUICtrlCreatePic("pic"&$i&".JPG",Random(0,500-241),Random(0,500-181),241,181)
Next
GUISetState()
While 1
$msg = GUIGetMsg()
Select
Case $msg = -3
Exit
Case _IsPressed(1) = 1
$cursor = GUIGetCursorInfo($gui)
If WinActive($gui) And $cursor[4] - 2 > 0 Then
$sousgui = GUICreate("",241,181,MouseGetPos(0)-120,MouseGetPos(1)-90,$WS_POPUPWINDOW, $WS_EX_TOOLWINDOW+$WS_EX_TOPMOST )
GUICtrlCreatePic("pic"&$cursor[4] - 3&".JPG",0,0,241,181)
GUISetState()
GUICtrlDelete($cursor[4])
While 1
Sleep(10)
WinMove($sousgui, "", MouseGetPos(0)-120,MouseGetPos(1)-90)
If Not _IsPressed(1) Then ExitLoop
WEnd
GUIDelete($sousgui)
GUISwitch ($gui)
$cursor2 = GUIGetCursorInfo($gui)
$pic[$cursor[4] - 3] = GUICtrlCreatePic("pic"&$cursor[4] - 3&".JPG",$cursor2[0]-120,$cursor2[1]-90,241,181)
EndIf
EndSelect
WEndSignez ici
-
SagePourpre
- Niveau 7

- Messages : 442
- Enregistré le : dim. 06 juil. 2008 09:11
- Status : Hors ligne
Re: [..] Drag Drop Image
ou encore...
En gros, j'ai utilisé
Opt("GuiOnEventMode",1)
Opt("MouseCoordMode",2)
ensuite il est important de rajouter $SS_NOTIFY comme style pour la pic
On crée un événement
GuiCtrlSetOnEvent($picc,"move")
et dans la fonction "move" on retrouve
Le $picW et $picH de cet exemple sont la largeur et hauteur de l'image (pour que l'image soit déplacée selon son centre) .
Pour voir l'exemple complet, utilise le script dans les spoilers et remplace le chemin de $pic pour une image valide dans ton disque dur.
Ensuite, il devrait être relativement facile de faire un "aimant" (Si la personne lâche le morceaux dans la grille mais qu'il n'est pas parfaitement
positionné, le morceau se positionne de lui-même)
Voilà !
► Afficher le texte
En gros, j'ai utilisé
Opt("GuiOnEventMode",1)
Opt("MouseCoordMode",2)
ensuite il est important de rajouter $SS_NOTIFY comme style pour la pic
On crée un événement
GuiCtrlSetOnEvent($picc,"move")
et dans la fonction "move" on retrouve
Code : Tout sélectionner
while _IsPressed(01)
$pos = MouseGetPos()
ToolTip($pos[0] & " / " & $pos[1],0,0)
GUICtrlSetPos(@GUI_CtrlId,$pos[0] - $picW/2 ,$pos[1] - $pich/2,-1,-1)
Sleep(100)
WEndPour voir l'exemple complet, utilise le script dans les spoilers et remplace le chemin de $pic pour une image valide dans ton disque dur.
Ensuite, il devrait être relativement facile de faire un "aimant" (Si la personne lâche le morceaux dans la grille mais qu'il n'est pas parfaitement
positionné, le morceau se positionne de lui-même)
Voilà !
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
plus belle vue du haut de son Pouf = )
- TommyDDR
- Modérateur

- Messages : 2116
- Enregistré le : mar. 22 juil. 2008 21:55
- Localisation : Nantes
- Status : Hors ligne
Re: [..] Drag Drop Image
Merci Iste pour ta réponse mais celle de SagePourpre est celle qu'il me fallait
Un grand merci a SagePourpre
Résolu.
Un grand merci a SagePourpre
Résolu.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
-
SagePourpre
- Niveau 7

- Messages : 442
- Enregistré le : dim. 06 juil. 2008 09:11
- Status : Hors ligne
Re: [..] Drag Drop Image
héhé... pas de quoi !
► Afficher le texte
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
plus belle vue du haut de son Pouf = )
- TommyDDR
- Modérateur

- Messages : 2116
- Enregistré le : mar. 22 juil. 2008 21:55
- Localisation : Nantes
- Status : Hors ligne
Re: [..] Drag Drop Image
Rectification, j'ai un petit problème ^^'
Quand je veux déplacer une piece de la liste (qui se trouve dans une GUI Fille a la Gui de la grille), celle ci va en dessou de la GUI Mère.
Pour ceux qui connaissent, avec un pote nous essayons de faire Eternity 2 sur PC. (Et il est interdit de dévoilé les formes/couleur des pièces ^^' d'où le rouge)
Voici une impr : Comme on peut le voir, la pièce déplacée se glisse sous la GUI mère.
Pour l'instant je cliquai sur la pièce dans la liste puis cliquai sur la grille pour poser la pièce.
Voila.
Quand je veux déplacer une piece de la liste (qui se trouve dans une GUI Fille a la Gui de la grille), celle ci va en dessou de la GUI Mère.
Pour ceux qui connaissent, avec un pote nous essayons de faire Eternity 2 sur PC. (Et il est interdit de dévoilé les formes/couleur des pièces ^^' d'où le rouge)
Voici une impr : Comme on peut le voir, la pièce déplacée se glisse sous la GUI mère.
Pour l'instant je cliquai sur la pièce dans la liste puis cliquai sur la grille pour poser la pièce.
Voila.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
-
SagePourpre
- Niveau 7

- Messages : 442
- Enregistré le : dim. 06 juil. 2008 09:11
- Status : Hors ligne
Re: [..] Drag Drop Image
Mouaip ... Il y'a moyen de faire ça ...
En gros, il faut que tu effaces le control (GuiCtrlDelete),
que tu mettes le focus sur l'autre gui (GuiSetState($GUI_FOCUS,$NOM_DE_LA_GUI)
et puis que tu recrée le contrôle aux nouvelles coordonnées, sans oublier
de le remettre en $SS_NOTIFY et de remettre le GuiCtrlSetOnEvent
Si tu ne fais pas ça, GuiCtrlSetPos va mettre le contrôle aux coordonnées désirées mais, comme
tu l'as déjà expérimenté, il ne change pas de GUI automatiquement. Il reste toujours sur la gui ou il a
été crée.
En gros, il faut que tu effaces le control (GuiCtrlDelete),
que tu mettes le focus sur l'autre gui (GuiSetState($GUI_FOCUS,$NOM_DE_LA_GUI)
et puis que tu recrée le contrôle aux nouvelles coordonnées, sans oublier
de le remettre en $SS_NOTIFY et de remettre le GuiCtrlSetOnEvent
Si tu ne fais pas ça, GuiCtrlSetPos va mettre le contrôle aux coordonnées désirées mais, comme
tu l'as déjà expérimenté, il ne change pas de GUI automatiquement. Il reste toujours sur la gui ou il a
été crée.
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
plus belle vue du haut de son Pouf = )
- Iste
- Niveau 11

- Messages : 1870
- Enregistré le : jeu. 04 déc. 2008 14:21
- Localisation : 76
- Status : Hors ligne
Re: [..] Drag Drop Image
Tien donc, comme c'est étrange
Enfin, 1 partout plutot, car vu le grand nombre de contrôle que tu as, le mode événementiel est un passage obligé.
Mais le coté [suppression d'image]->[création de GUI flotante] / [suppression de GUI flotante]->[création d'image] est vraiment le plus simple.
Surtout que avec un quadrillage, 'il suffit' de savoir au dessus de quel case se trouve ton curseur au moment du déclic pour savoir ou créer la nouvelle image
► Afficher le texte
Mais le coté [suppression d'image]->[création de GUI flotante] / [suppression de GUI flotante]->[création d'image] est vraiment le plus simple.
Surtout que avec un quadrillage, 'il suffit' de savoir au dessus de quel case se trouve ton curseur au moment du déclic pour savoir ou créer la nouvelle image
Signez ici
-
SagePourpre
- Niveau 7

- Messages : 442
- Enregistré le : dim. 06 juil. 2008 09:11
- Status : Hors ligne
Re: [..] Drag Drop Image
Bon bon ok... j'avoue que mon idée était idéale avant que je sache qu'il y'avait deux gui d'impliquées.
Mais pour ma défense, euh... le cri du petit canard chinois, en période de rut, émet le son suivant ...
Mais pour ma défense, euh... le cri du petit canard chinois, en période de rut, émet le son suivant ...
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
plus belle vue du haut de son Pouf = )
-
SagePourpre
- Niveau 7

- Messages : 442
- Enregistré le : dim. 06 juil. 2008 09:11
- Status : Hors ligne
Re: [..] Drag Drop Image
Ceci fonctionne bien...
► Afficher le texte
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
plus belle vue du haut de son Pouf = )
