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