peux-t'on creer un effet de transition entre 2 fenetre ???
-
- 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 ???
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
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
-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
-
- Messages : 1501
- Inscription : dim. 18/avr./2004 15:04
- Localisation : sud de la france
-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
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
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)]
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
-
- Messages : 1501
- Inscription : dim. 18/avr./2004 15:04
- Localisation : sud de la france
-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
-
- Messages : 1501
- Inscription : dim. 18/avr./2004 15:04
- Localisation : sud de la france
-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
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
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)
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
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)]
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
-
- Messages : 1501
- Inscription : dim. 18/avr./2004 15:04
- Localisation : sud de la france