Page 1 sur 1

peux-t'on creer un effet de transition entre 2 fenetre ???

Publié : mer. 08/déc./2004 22:22
par jbernard13
bonsoir

peux-t'on creer un effet de transition entre 2 fenetre

on peux comme on vois sur certain site de web quand on change de page


merci

Publié : mer. 08/déc./2004 22:49
par Le Soldat Inconnu
heu, tu veux faire quoi exactement ?

Vas-y explique ?

Tout est possible.

Publié : mer. 08/déc./2004 23:13
par jbernard13
imagine
on a une fenetre avec une image et un bouton
on clique sur le bouton pour aller dans une autre fenetre
j'aimerai que le passage entre la fenetre 0 et la fenetre 1 il y est une animation comme par un rideaux qui effacerai peu peu a lafenetre0

Publié : mer. 08/déc./2004 23:21
par Le Soldat Inconnu
regarde ceci et dis moi si ce genre d'effet te plairait :

http://www.2dev.org/index.php?mod=artic ... ires&id=39

Pour changer d'effet, lit le commentaire en début de procedure AnimateWindow puis modifie l'appel de cette procedure à la fin du code.

Si un truc du genre te branche, je te ferais un petit exemple pour passer d'une fenêtre à une autre

Publié : jeu. 09/déc./2004 19:14
par jbernard13
ok ca me plais beaucoup

Publié : jeu. 09/déc./2004 19:17
par Le Soldat Inconnu
Quel effet ? il y en a 9 neuf, je suis pas devin :mrgreen:

Publié : jeu. 09/déc./2004 21:04
par jbernard13
celle où la fenetre part vers le haut

Publié : jeu. 09/déc./2004 23:45
par Le Soldat Inconnu
ok, c'est tout simple.

Donc une fenêtre avec un bouton, je clic sur le bouton, la fenêtre part vers le haut et j'ouvre une autre fenêtre normalement

Code : Tout sélectionner

; Auteur : Le Soldat Inconnu
; Version de PB : 3.9

Enumeration
  #Bouton_NouvelleFenetre
  #FenetrePrincipale
  #FenetreBidule
EndEnumeration


Procedure NouvelleFenetre()
  ; Cette procedure va permettre de gérer la nouvelle fenêtre, même principe que la boucle principale sauf que je la met dans une procedure
  
  ; Création de la fenêtre et de la GadgetList
  If OpenWindow(#FenetreBidule, 0, 0, 200, 200, #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget, "Nouvelle fenêtre") = 0 Or CreateGadgetList(WindowID()) = 0
    ; Si on a une erreur lors de la creation de la fenêtre ou de la gadgetlist, on quitte le programme
    ; On rajouté un message d'erreur si on veut (un MessageRequester )
    End
  EndIf

  Repeat
    Event = WaitWindowEvent()
    
  Until Event = #PB_EventCloseWindow
  
  CloseWindow(#FenetreBidule) ; On ferme la fenêtre
  
EndProcedure


Procedure AnimationFenetre(NumeroFenetre)
  ; Cette procedure va animer la fenêtre NumeroFenetre
  ; Dans la boucle principale, on donne le numero #FenetrePrincipale donc on va traiter cette fenêtre
  
  ; voilà comment je vais proceder
  ; d'abord, je stocke la position actuelle de la fenêtre pour pouvoir la remettre à sa place par la suite
  ; ensuite je déplace la fenêtre vers le haut
  ; je la rend invisible
  ; et je la remets au milieu (c'est pour pouvoir la remetre au milieu que je la rend invisible
  ; comme ça, j'ai plus qu'a la rendre visible par la suite pour retrouver ma fenêtre
  
  ; On utilise donc la fenêtre NumeroFenetre ( ceci sert si tu as plusieurs fenêtre, comme ça, on est sur de travailler avec la bonne, note que c'est pas obligatoire)
  UseWindow(NumeroFenetre)
  
  ; On récupère la position d'origine de la fenêtre
  FenetreX_PositionOrigine = WindowX()
  FenetreY_PositionOrigine = WindowY()
  
  ; On envoie la fenêtre vers le haut
  ; Pour cela, il suffit de changer la position sur les Y
  ; Le haut de l'écran à la coordonnée 0
  ; La fenêtre à une hauteur de WindowHeight()
  ; Donc pour que la fenêtre disparaissent completement, il faut qu'elle se déplace jusqu'à la position Y = -WindowHeight()
  
  #VitesseDeplacement = 10 ; on règle la vitesse, à toi de choisir la valeur
  ; Au lieu de déplacé la fenêtre de 1 pixels en 1 pixels, je la déplace 10 pixels par pixels pour pouvoir aller plus vite
  ; Pourquoi ? Simplement parce que quand on déplace la fenêtre, Windows doit la redessiner à un autre emplacement et cela est long
  ; Donc diminuer le nombre de déplacement de la fenêtre en augmentant le pas de déplacement permet d'aller plus vite
  
  For Y = FenetreY_PositionOrigine To -WindowHeight() Step -#VitesseDeplacement
    ; On va de FenetreY_PositionOrigine jusqu'à -WindowHeight() donc il faut un pas négatif car FenetreY_PositionOrigine > -WindowHeight()
    ; Y va prendre toutes les valeurs entre FenetreY_PositionOrigine et -WindowHeight()
    ; Voir tuto pour débutant sur le forum pour plus d'explication sur la boucle For
    
    ; On déplace la fenêtre
    MoveWindow(FenetreX_PositionOrigine, Y)
    ; En X, la fene^tre garde la position d'origne, et elle se déplace en Y
    
    ; On attend un peu
    Delay(10) 
    ; Le temps d'attente permet d'avoir une fenêtre qui ne se déplace pas trop vite
    ; il permet aussi de laiser le temps à Windows de dessiner la fenêtre à sa nouvelle position
    
  Next
  
  ; La fenêtre est déplacé
  
  HideWindow(#FenetrePrincipale, 1) ; On masque la fenêtre
  
  ; On la remet à la position d'origine
  MoveWindow(FenetreX_PositionOrigine, FenetreY_PositionOrigine)
  
  ; et voilà
  
EndProcedure


; Création de la fenêtre et de la GadgetList
If OpenWindow(#FenetrePrincipale, 0, 0, 300, 300, #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget, "Fenêtre principale") = 0 Or CreateGadgetList(WindowID()) = 0
  ; Si on a une erreur lors de la creation de la fenêtre ou de la gadgetlist, on quitte le programme
  ; On rajouté un message d'erreur si on veut (un MessageRequester )
  End
EndIf

; On place un bouton sur la fenêtre
ButtonGadget(#Bouton_NouvelleFenetre, 10, 10, 100, 50, "Nouvelle fenêtre")

; Boucle principale
Repeat
  Event = WaitWindowEvent()
  
  If Event = #PB_EventGadget
    Select EventGadgetID() ; Gadgets
      Case #Bouton_NouvelleFenetre
      
        AnimationFenetre(#FenetrePrincipale) ; On lance l'animation de la fenêtre
        
        NouvelleFenetre() ; On ouvre la nouvelle fenêtre
        
        ; Dès que l'on quitte la nouvelle fenêtre
        ; On affiche à nouveau la fenêtre principale
        HideWindow(#FenetrePrincipale, 0) ; On affiche la fenêtre
        ; Et on dit qu'on utilise cette fenêtre
        UseWindow(#FenetrePrincipale)
        
    EndSelect
  EndIf
   
Until Event = #PB_EventCloseWindow

End
Voilà, je n'ai utilisé que des fonctions de PureBasic, donc tu as tout dans l'aide.

Et si tu as des questions, n'hésites pas
(prends quand même le temps de réfléchir au problème avant, c'est ça qui est le plus formatteur, trouver commment un code marche, ça permet de mieux l'assimiler et d'arriver à le reproduire)

Publié : ven. 10/déc./2004 7:17
par jbernard13
merci regis
tu es fort
tu sais j'ai beaucoup appris le purebasic
je travaille sur mon programme de gestion