Page 1 sur 1

[Ex] Transition entre 2 fenêtres (Aéro)

Posté : sam. 01 janv. 2011 13:32
par matwachich
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!

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
 
PS: premier script 2011!!!

Re: [Ex] Transition entre 2 fenêtres (Aéro)

Posté : sam. 01 janv. 2011 13:36
par BlueCore
yah ça le fait sur XP. mais.. Aero ? franchement c'est pas ça du tout.

Re: [Ex] Transition entre 2 fenêtres (Aéro)

Posté : sam. 01 janv. 2011 16:18
par cramaboule
matwachich a écrit :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!!!
du forum anglais... un script d'effet de fondu entre 2 slides.

http://www.autoitscript.com/forum/topic ... on-effect/

Re: [Ex] Transition entre 2 fenêtres (Aéro)

Posté : dim. 02 janv. 2011 19:19
par matwachich
@BlueCore: Bah au fait, si j'ai dit aéro c'est juste par rapport au sujet qui m'a donné l'idée de faire ce script! Sinon, mon laptop est en sous Vista Familial basic, donc j'ai pas aéro!

@cramaboule: J'ai tester ton script et je l'adore! je voulais faire un truc du genre pour un écran de veille, et la, tu me facilite la tache :wink:

Re: [Ex] Transition entre 2 fenêtres (Aéro)

Posté : lun. 03 janv. 2011 18:29
par cramaboule
@matwachich: No problem !!! Je l'aime aussi :P :lol: :lol: :lol: