[R] Faire bouger et tourner un rectangle

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
stephaneR
Niveau 1
Niveau 1
Messages : 12
Enregistré le : jeu. 12 mars 2009 18:02
Status : Hors ligne

[R] Faire bouger et tourner un rectangle

#1

Message par stephaneR »

Salut à tous,

1 - Je souhaite faire bouger un rectangle, pour le moment je n'ai pas trouvé une solution plus rapide que ça. Est_il possible de redimensionner un objet graphique sans le détruire?

2 - De plus je voudrais faire tourner le rectangle. Existe-t-il une commande de rotation?

Code : Tout sélectionner

#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>

Opt('MustDeclareVars', 1)

Global $MAXGr = 6
Global $a[$MAXGr + 1]   ; 0 and $MAXGr entries not used to allow GUICtrlDelete result

Example()

Func Example()
    Local $msg, $inc, $i, $del1

    GUICreate("My Main", -1, -1, 100, 100)
    
    for $i=1 to 100
        $a[1] = GUICtrlCreateGraphic($i, $i, 50, 50)
        GUICtrlSetBkColor(-1, 0x00FF00)
        GUICtrlSetGraphic(-1, $GUI_GR_RECT, 10, 10, 40, 40)
        GUICtrlSetColor(-1, 0)
        Sleep(100)
        GUICtrlDelete($a[1])
        GUISetState()
    Next
    Do
        $msg = GUIGetMsg()

    Until $msg = $GUI_EVENT_CLOSE
EndFunc   ;==>Example
Merci :D
Modifié en dernier par stephaneR le jeu. 26 mars 2009 11:24, modifié 1 fois.
GaRydelaMer
Niveau 7
Niveau 7
Messages : 450
Enregistré le : mer. 18 mars 2009 22:12
Localisation : Montpellier
Status : Hors ligne

Re: [..] Faire bouger et tourner un rectangle

#2

Message par GaRydelaMer »

Bonsoir

pour la position
GUICtrlSetPos ( controlID, left, top [, width [, height]] )
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Faire bouger et tourner un rectangle

#3

Message par sylvanie »

Bonsoir

un petit plus de suggestion :
isoler le code de déplacement dans une autre fonction qui sera lancée par un adlib enable au lieu de la boucle for, afin de rendre la main de suite à la gui principale sans être bloqué dans la boucle :
Dans le code donné au dessus ; si on clique sur la croix durant le déplacement, on a rien comme réacton, contrairement à ceci :

Code : Tout sélectionner

#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>

Opt('MustDeclareVars', 1)


Global $max_ind = 100
Global $cur_ind = 1
Global $ctrl_rect_id

Example()

Func Example()
    Local $msg, $inc, $i, $del1

    GUICreate("My Main", -1, -1, 100, 100)
    $ctrl_rect_id = GUICtrlCreateGraphic($cur_ind, $cur_ind, 50, 50)
    GUICtrlSetBkColor(-1, 0x00FF00)
    GUICtrlSetGraphic(-1, $GUI_GR_RECT, 10, 10, 40, 40)
    GUICtrlSetColor(-1, 0)
    GUISetState()
    AdlibEnable("call_back_graph",100)
    Do
        $msg = GUIGetMsg()

    Until $msg = $GUI_EVENT_CLOSE
EndFunc   ;==>Example



Func call_back_graph()
    ; on teste si l'idice en cours est > à la limite
    ;dans ce cas on arrête le adlibenable car on a fini
    If $cur_ind > $max_ind Then
        AdlibDisable()
        Return
    EndIf
    
    GUICtrlSetPos ( $ctrl_rect_id, $cur_ind, $cur_ind ) 
    $cur_ind+=1
EndFunc

 
mais pour la rotation, todo
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
stephaneR
Niveau 1
Niveau 1
Messages : 12
Enregistré le : jeu. 12 mars 2009 18:02
Status : Hors ligne

[M] Faire bouger et tourner un rectangle

#4

Message par stephaneR »

Merci
- à GaRydelaMer pour la commande de déplacement, je me demande omment j'ai pu passer au travers
- et à sylvanie pour le "multitache". Justement, j'en avais besoin pour un précédent projet. Pour ce qui sont intéressés par le sujet, la commande AdlibEnable ne permet pas de créer 2 interruptions, mais certain on créé une fonction http://www.autoitscript.fr/forum/viewto ... ble#p12041

De plus je vais poster un nouveau message pour mon problème de rotation, ainsi je mettrais celui-ci en [Résolu].

:D Merci encore :)
Répondre