[Ex] Transition entre 2 fenêtres (Aéro)
Posté : sam. 01 janv. 2011 13:32
J'ai fait ce petit script pour un ami du forum qui l'a demandé (je met un lien vers ce post dans le sujet de sa demande!)
Il permet de faire une petite transition sympatoch entre deux fenêtres.
EDIT: j'ai ajouté un petit effet de fade-in/out sur les fenêtres!
PS: premier script 2011!!!
Il permet de faire une petite transition sympatoch entre deux fenêtres.
EDIT: j'ai ajouté un petit effet de fade-in/out sur les fenêtres!
Code : Tout sélectionner
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.6.1
Author: Matwachich
Script Function:
Exemple de transition entre deux fenêtre à la aero!
#ce ----------------------------------------------------------------------------
#include <GUIConstants.au3>
#Include <Math.au3>
#region - GUI Create
$gui1 = GUICreate('Gui 1', 300, 100)
$b1 = GUICtrlCreateButton("Change", 20, 20, 260, 60)
GUISetState()
#endregion
#region - GUI Create
$gui2 = GUICreate('Gui 2', 300, 100)
$b2 = GUICtrlCreateButton("Change", 20, 20, 260, 60)
;~ GUISetState()
#endregion
#region - GUI SelectLoop
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
Exit
Case $msg = $b1
_WinAnime_AeroTransition($gui1, $gui2)
Case $msg = $b2
_WinAnime_AeroTransition($gui2, $gui1)
EndSelect
WEnd
#endregion
Func _WinAnime_AeroTransition($gui1, $gui2) ; $gui1 doit être visible, et $gui2 invisible mais elle peuvent être visibles toutes les deux
; ça ne pose pas de problème (essayez!)
Local $visiblePos = WinGetPos($gui1) ; On ramen la fenetre à faire apparaitre ($gui2)
WinMove($gui2, "", $visiblePos[0], $visiblePos[1]) ; à la position de la fenêtre visible
GUISetState(@SW_SHOW, $gui1) ; On rend visible et transparente
GUISetState(@SW_SHOW, $gui2) ; les deux fenêtres
WinSetTrans($gui1, "", 255) ;
WinSetTrans($gui2, "", 0) ;
Local $sin, $amplitudeX = 10, $amplitudeY = 10 ; Modifiez les amplitudes pour tester!
Local $angl2trans = 360/255
For $i = 0 To 360 Step 10
$sin = Sin(_Radian($i)) ; La clef! un fonction sinusoïdale
WinMove($gui1, "", $visiblePos[0] + ($sin * $amplitudeX), $visiblePos[1] + ($sin * $amplitudeY)) ; J'ai la flème
WinMove($gui2, "", $visiblePos[0] - ($sin * $amplitudeX), $visiblePos[1] - ($sin * $amplitudeY)) ; d'expliquer!
WinSetTrans($gui1, "", 255 - ($i / $angl2trans)) ; Un petit jeu de transparence!
WinSetTrans($gui2, "", $i / $angl2trans) ; fade-in et fade-out
Sleep(1)
Next
GUISetState(@SW_HIDE, $gui1) ; On cache la fenêtre initiallement visible ($gui1)
WinSetTrans($gui1, "", 255) ; Et on enlève la transparence
WinSetTrans($gui2, "", 255) ;
EndFunc