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

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
jbernard13
Messages : 1501
Inscription : dim. 18/avr./2004 15:04
Localisation : sud de la france

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

Message 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
Jbernard13
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

heu, tu veux faire quoi exactement ?

Vas-y explique ?

Tout est possible.
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
jbernard13
Messages : 1501
Inscription : dim. 18/avr./2004 15:04
Localisation : sud de la france

Message 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
Jbernard13
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message 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
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
jbernard13
Messages : 1501
Inscription : dim. 18/avr./2004 15:04
Localisation : sud de la france

Message par jbernard13 »

ok ca me plais beaucoup
Jbernard13
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

Quel effet ? il y en a 9 neuf, je suis pas devin :mrgreen:
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
jbernard13
Messages : 1501
Inscription : dim. 18/avr./2004 15:04
Localisation : sud de la france

Message par jbernard13 »

celle où la fenetre part vers le haut
Jbernard13
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message 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)
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
jbernard13
Messages : 1501
Inscription : dim. 18/avr./2004 15:04
Localisation : sud de la france

Message par jbernard13 »

merci regis
tu es fort
tu sais j'ai beaucoup appris le purebasic
je travaille sur mon programme de gestion
Jbernard13
Répondre