Fade Effekt Skript

  • Nach langem suchen nach einem FadeSkript und der erfahrung das keines funktioniert hab ich mal ein ganz einfaches Selber erstellt

    hier mal das Script

    Spoiler anzeigen
    [autoit]

    Func _FadeIn($WINTITLE,$DELAY)

    $TRANSPARENCY=0

    [/autoit] [autoit][/autoit] [autoit]

    While $TRANSPARENCY <= 255
    WinSetTrans($Wintitle,"",$TRANSPARENCY)
    Sleep($Delay)
    $TRANSPARENCY+=5
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _FadeOut($WINTITLE,$DELAY)

    $TRANSPARENCY=255

    [/autoit] [autoit][/autoit] [autoit]

    While $TRANSPARENCY >= 0
    WinSetTrans($Wintitle,"",$TRANSPARENCY)
    Sleep($Delay)
    $TRANSPARENCY-=5
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Einfach ins Include Verzeichnis legen und dann ins Skript Verlinken

    [/autoit] [autoit][/autoit] [autoit]

    Dann den Befehl

    [/autoit] [autoit][/autoit] [autoit]

    FADEIN($WINTITLE,$DELAY)
    oder
    FADEOUT($WINTITLE,$DELAY)

    [/autoit] [autoit][/autoit] [autoit]

    $WINTITLE = Titel des Fensters das gefadet werden soll
    $DELAY = Schnelligkeit(Beste ergebnisse mit Zahlen Zwischen 10 - schnell und 1000 - langsam)

    [/autoit]


    Sagt mir bitte was ihr davon haltet

    HAVE FUN


    HI LEUTE hab grade mein überarbeitetes Script fertiggemacht mit besserem FAdseeffekt und mehr einstellungen

    Bitte das Unten nehmen

    4 Mal editiert, zuletzt von alexanderschill (23. Juli 2010 um 20:33) aus folgendem Grund: FEHLER

  • schönes einfach gehaltenes Script aber in Zukunft würde ich dir empfehlen deine Sripte so zu Posten:

    Spoiler anzeigen
    [autoit]

    Func _FadeIn($WINTITLE,$DELAY)

    [/autoit] [autoit][/autoit] [autoit]

    $TRANSPARENCY=0

    [/autoit] [autoit][/autoit] [autoit]

    While $TRANSPARENCY <= 255
    WinSetTrans($Wintitle,"",$TRANSPARENCY)
    Sleep($Delay)
    $TRANSPARENCY+=5
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _FadeOut($WINTITLE,$DELAY)

    [/autoit] [autoit][/autoit] [autoit]

    $TRANSPARENCY=255

    [/autoit] [autoit][/autoit] [autoit]

    While $TRANSPARENCY >= 0
    WinSetTrans($Wintitle,"",$TRANSPARENCY)
    Sleep($Delay)
    $TRANSPARENCY-=5
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Einfach ins Include Verzeichnis legen und dann ins Skript Verlinken

    [/autoit] [autoit][/autoit] [autoit]

    Dann den Befehl

    [/autoit] [autoit][/autoit] [autoit]

    FADEIN($WINTITLE,$DELAY)
    oder
    FADEOUT($WINTITLE,$DELAY)

    [/autoit] [autoit][/autoit] [autoit]

    $WINTITLE = Titel des Fensters das gefadet werden soll
    $DELAY = Schnelligkeit(Beste ergebnisse mit Zahlen Zwischen 10 - schnell und 1000 - langsam)

    [/autoit]

    Das finden von Rechtschreibfehlern muss sofort und unverzüglich dem Autor gemeldet werden. Das eigennützige Verwenden dieser Rechtschreibfehler ist strengstens untersagt und kann mit Freiheitsenzug bestraft werden.

  • Ist sicherlich nicht verkehrt - aber nichts, wofür ich extra ein Include einfügen würde ;)

    Kurze Anmerkung: In den While-Schleifen verwendest du ">=" / "<=".
    Dadurch wird die Funktion WinSetTrans allerdings auch mal mit 230 bzw -5 aufgerufen...
    Bringt das Script nicht zum Absturz, ist aber unschön. Find ich. ^^

    Vielleicht wäre es auch interessant, variable Grenzen der Transparenz zu setzen ?
    Und, wenn mein Fenster bereits teils transparent ist , wird es beim Fade-Out erst einmal ganz gezeigt,
    beim Fade-In erst einmal ganz versteckt ;)


    Und vielleicht interessiert dich ja dieser Post noch: user32.dll AnimateWindow
    :D

    limth

    There are only 10 types of people in the world:
    Those who understand binary - and those who don't.

  • Du meinst erst einmal die Transparenz abrufen und dann Faden???

    kannst du mir sagen wie sowas gehen sollte

    WingetTrans gibts ja leider nich


    Ich werd mich nacher nochmal dransetzen und meine kleinen fehler korigieren

    Stell es so ca um 17 uhr nochmal rein(vorher geht leider nich muss noch weg

    ach übrigens das mit - 5 oder 230 geht eigentlich nich, da das -=5 ist und das geht immer auf

    wenn die Transparenz grenze Variabel sein soll dann muss ich die -=1 setzen und damit ist das skript viel langsamer und damit manchmal ungeeignet

  • hier 1 minute googln :D

    [autoit]

    Func WinGetTrans($sTitle, $sText = "")
    Local $hWnd = WinGetHandle($sTitle, $sText)
    If Not $hWnd Then Return -1
    Local $val = DllStructCreate("int")
    Local $aRet = DllCall("user32.dll", "int", "GetLayeredWindowAttributes", "hwnd", $hWnd, "ulong_ptr", 0, "int_ptr", DllStructGetPtr($val), "ulong_ptr", 0)
    If @error Or Not $aRet[0] Then Return -1
    Return DllStructGetData($val, 1)
    EndFunc

    [/autoit]
  • ach übrigens das mit - 5 oder 230 geht eigentlich nich, da das -=5 ist und das geht immer auf

    Deine Erklärung versteh ich grad nicht .. oO

    Aber ich hab mich geirrt.. Da erst nach dem Aufruf von WinSetTrans der Wert der Variablen verändert wird, passt das wieder .. ^^

    Naja, ich mach das immer so:

    [autoit]


    For $i = 0 To 255 Step +5
    WinSetTrans( $WinTitle, '', $i )
    Next

    [/autoit]

    ;)


    Edit:

    wenn die Transparenz grenze Variabel sein soll dann muss ich die -=1 setzen und damit ist das skript viel langsamer und damit manchmal ungeeignet

    Nö. Du kannst deine Schrittgröße einfach beibehalten.
    Prüfst halt einfach auf größer/kleiner und setzt em Ende noch ein WinSetTrans( '', '', 0 ) bzw WinSetTrans( '', '', 255 ) - je nachdem ob Fade-In oder Fade-Out.

    There are only 10 types of people in the world:
    Those who understand binary - and those who don't.

  • [autoit]

    Func _FadeIn($WINTITLE,$TEXT,$DELAY,$MAXLIMIT = 255)
    $TRANSPARENCY=WinGetTrans($WINTITLE)
    For $TRANSPARENCY = 0 To 255 Step +5 ; Warum 0 Bis 255 ? Da werden $MAXLIMIT und WinGetTrans einfach übergangen ??
    WinSetTrans($Wintitle,$TEXT,$TRANSPARENCY)
    Sleep($Delay)
    Next
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    Func _FadeOut($WINTITLE,$TEXT,$DELAY,$MINLIMIT = 0)
    $TRANSPARENCY=WinGetTrans($WINTITLE)

    [/autoit][autoit][/autoit][autoit]

    For $TRANSPARENCY = 0 To 255 Step -5 ; Dasselbe hier, außerdem dürfte 'von 0 bis 255 in Schritten von -5' eigentlich gar nicht durchlaufen ?! oO
    WinSetTrans($WINTITLE,$TEXT,$TRANSPARENCY)
    Sleep($Delay)
    Next
    EndFunc

    [/autoit]

    Kommentare im Code.

    There are only 10 types of people in the world:
    Those who understand binary - and those who don't.

  • oh gott wie dumm von mir hab glatt die Variable vergessen sry

    In 20 min is es wieder on diesmal richtig


    So jetzt aber

    Spoiler anzeigen
    [autoit]


    Func _FadeIn($WINTITLE,$TEXT,$DELAY,$LIMIT = 255)
    $TRANSPARENCY=WinGetTrans($WINTITLE)
    For $TRANSPARENCY = 0 To $LIMIT Step +5
    WinSetTrans($Wintitle,$TEXT,$TRANSPARENCY)
    Sleep($Delay)
    Next
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _FadeOut($WINTITLE,$TEXT,$DELAY,$LIMIT = 0)
    $TRANSPARENCY=WinGetTrans($WINTITLE)

    [/autoit] [autoit][/autoit] [autoit]

    For $TRANSPARENCY = 255 To $LIMIT Step -5
    WinSetTrans($WINTITLE,$TEXT,$TRANSPARENCY)
    Sleep($Delay)
    Next
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func WinGetTrans($WINTITLE, $TEXT = "")
    Local $hWnd = WinGetHandle($WINTITLE, $TEXT)
    If Not $hWnd Then Return -1
    Local $val = DllStructCreate("int")
    Local $aRet = DllCall("user32.dll", "int", "GetLayeredWindowAttributes", "hwnd", $hWnd, "ulong_ptr", 0, "int_ptr", DllStructGetPtr($val), "ulong_ptr", 0)
    If @error Or Not $aRet[0] Then Return -1
    Return DllStructGetData($val, 1)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    System:
    _FadeIn($WINTITLE,$TEXT,$DELAY,$LIMIT)

    [/autoit] [autoit][/autoit] [autoit]

    $WINTITLE: Fenster Titel
    $TEXT: Fenster Text
    $DELAY: Dauer des Fadens ( am beste funktioniert das skript mit Zahlen zwischen 10 und 1000)
    $LIMIT: Transparenzgrenze (Standard ist 255 komplett sichtbar)

    [/autoit] [autoit][/autoit] [autoit]

    bei

    [/autoit] [autoit][/autoit] [autoit]

    _FadeOut($WINTITLE,$TEXT,$DELAY,$LIMIT)

    [/autoit] [autoit][/autoit] [autoit]

    $LIMIT: Transparenzgrenze (Standard ist 0 komplett unsichtbar)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit]

    2 Mal editiert, zuletzt von alexanderschill (22. Juni 2010 um 18:31)

  • Wie du vielleicht gemerkt hast habe ich auch ein Fade out und eine unterstützung von tranzparenz vor dem FAden

    deswegen stimmt deine Formolierung nicht ganz. Ich habe ein Vollständiges(noch nicht ganz ausgereiftes) Skript geschrieben, mit dem man das Faden einstellen kann und zwar sowohl in und out

    Trotzdem Danke für den Kommentar

  • Ich habe die WinAnimate noch mal Als Richtige UDF gefunden

    Spoiler anzeigen
    [autoit]


    Global Const $AW_FADE_IN = 0x00080000;fade-in
    Global Const $AW_FADE_OUT = 0x00090000;fade-out
    Global Const $AW_SLIDE_IN_LEFT = 0x00040001;slide in from left
    Global Const $AW_SLIDE_OUT_LEFT = 0x00050002;slide out to left
    Global Const $AW_SLIDE_IN_RIGHT = 0x00040002;slide in from right
    Global Const $AW_SLIDE_OUT_RIGHT = 0x00050001;slide out to right
    Global Const $AW_SLIDE_IN_TOP = 0x00040004;slide-in from top
    Global Const $AW_SLIDE_OUT_TOP = 0x00050008;slide-out to top
    Global Const $AW_SLIDE_IN_BOTTOM = 0x00040008;slide-in from bottom
    Global Const $AW_SLIDE_OUT_BOTTOM = 0x00050004;slide-out to bottom
    Global Const $AW_DIAG_SLIDE_IN_TOPLEFT = 0x00040005;diag slide-in from Top-left
    Global Const $AW_DIAG_SLIDE_OUT_TOPLEFT = 0x0005000a;diag slide-out to Top-left
    Global Const $AW_DIAG_SLIDE_IN_TOPRIGHT = 0x00040006;diag slide-in from Top-Right
    Global Const $AW_DIAG_SLIDE_OUT_TOPRIGHT = 0x00050009;diag slide-out to Top-Right
    Global Const $AW_DIAG_SLIDE_IN_BOTTOMLEFT = 0x00040009;diag slide-in from Bottom-left
    Global Const $AW_DIAG_SLIDE_OUT_BOTTOMLEFT = 0x00050006;diag slide-out to Bottom-left
    Global Const $AW_DIAG_SLIDE_IN_BOTTOMRIGHT = 0x0004000a;diag slide-in from Bottom-right
    Global Const $AW_DIAG_SLIDE_OUT_BOTTOMRIGHT = 0x00050005;diag slide-out to Bottom-right
    Global Const $AW_EXPLODE = 0x00040010;explode
    Global Const $AW_IMPLODE = 0x00050010;implode

    [/autoit] [autoit][/autoit] [autoit]

    Func _WinAnimate($v_gui, $i_mode, $i_time = 1000)
    If @OSVersion = "WIN_XP" OR @OSVersion = "WIN_2000" Then
    DllCall("user32.dll", "int", "AnimateWindow", "hwnd", WinGetHandle($v_gui), "int", $i_time, "long", $i_mode)
    Local $ai_gle = DllCall('kernel32.dll', 'int', 'GetLastError')
    If $ai_gle[0] <> 0 Then
    SetError(1)
    Return 0
    EndIf
    Return 1
    EndIf
    EndFunc;==> _WinAnimate()

    [/autoit]

    Aber der nachteil bei der Funktion ist das die GUI´s unter XP Schwarze ecken bekommen, wenn diese Funktion angewand wurde. So wars bei mir halt damals.

  • Nun, wenn du dir _GUIFlyingFadeIn genauer angesehen hättest, wüsstest du, dass:

    a) Transparenz vor dem Faden sowie
    b) Fade-Out

    ebenfalls unterstützt werden.

    [autoit]

    For $i = $Start To $End Step $Speed

    [/autoit]

    Damit übertrifft es dein Script wieder,
    denn _GUIFlyingFadeIn ist kompakter und beinhaltet zusätzlich das "Ein-/Ausfliegen" des Fensters.


    Edit:
    @Sprenger: Schwarze Ecken ? Ist mir nie aufgefallen - ebenfalls XP ^^

    There are only 10 types of people in the world:
    Those who understand binary - and those who don't.

  • Hi stimmt wenn man weiter runter scrollt sieht man die Func

    Allerdings weiß ich nicht wie ich das Kompakter machen sollte???

    Und falls ich das richtig gesehen hat hat das andere Script keine Unterstützung für Tranzparenz VOR dem Faden

    außer man weiß die Tranzparenz vorher($Start) aber automatische erkennung sehe ich da nich

    oder wo steht das???

  • Hm. Das heißt jetzt also, das Besondere an deiner Version ist der Aufruf einer Funktion, die du nicht selbst geschrieben hast ? ;)

    Klar, du hast Recht, eingebaut ist das nicht - aber wenn ich meine Fenster selbst transparent gesetzt habe kenne ich auch den Wert..
    Oder aber ich besorg mir grad die WinGetTrans - Funktion... ^^

    Das soll jetzt keineswegs abwertend klingen, für dich war das jetzt bestimmt eine gute Übung, aber um ehrlich zu sein,...
    Wird kaum jemand dein Script benötigen. Die paar Zeilen werden sich die meisten wohl gerade selber zusammenbasteln, - evtl aus dem Forum kopieren, aber bestimmt kein Include dafür verwenden ;)


    Wenn man weiter runter scrollt.. ? oO
    Tatsache, da ist die auch augesplittet in FadeIn und FadeOut. Ist aber eigentlich unnötig, denn ich kann beides durch die obige Funktion erreichen, indem ich Start > End und Step < 0 wähle.

    Den Versuch, deine Funktion noch kompakter zu machen, erachte ich ebenfalls als unnötig. Denn du wirst wohl kaum unter die eine Zeile kommen, die der DllCall für die AnimateWindow-Funktion benötigt ;)
    Für dich zum üben, klar, kannst du versuchen. Alles unnötige rausschmeißen, aus 2 Funktionen eine machen - zB per opt Parameter $mode = 0 / 1 für Ein-Ausblenden etc...

    There are only 10 types of people in the world:
    Those who understand binary - and those who don't.

  • [autoit]


    Func WinGetTrans($sTitle, $sText = "")
    Local $hWnd = WinGetHandle($sTitle, $sText)
    If Not $hWnd Then Return -1
    Local $val = DllStructCreate("int")
    Local $aRet = DllCall("user32.dll", "int", "GetLayeredWindowAttributes", "hwnd", $hWnd, "ulong_ptr", 0, "int_ptr", DllStructGetPtr($val), "ulong_ptr", 0)
    If @error Or Not $aRet[0] Then Return -1
    Return DllStructGetData($val, 1)
    EndFunc

    [/autoit]


    So müsste es gehen.

    P.S. Ist nicht von mir sondern imho aus dem englischen Forum.

  • Sagen wir es so: Dein Bemühen ist schonmal ein Anfang.
    Dh., dass das bestimmt schon jeder selbst gecodet hat für ein Projekt oder selbst in der Lage ist dies in einer Minute zu machen...
    Also ist es sinnvoll, wenn man eine UDF codet, dass sie einem real auch zeit ersparrt beim coden. (DllCall, oda sehr lange Skripte mit einem Befehl wiedergeben)

    Aber da das einer deiner ersten Threads ist und das diese Codes keine Noobs posten: :thumbup:

    Nur keine Hektik - das Leben ist stressig genug

  • denke ich schließe dieses Forum, da du sicher recht hast ich wollte ja nur wissen ob es jemand besser hat und wenn ja wie


    Thred mein ich Natülich

    Einmal editiert, zuletzt von alexanderschill (23. Juni 2010 um 14:14)

  • Na ja nix besonderes hatte aber lust es trotzdem nochmal einfacher zu machen

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _FADE($WINTITLE,$TEXT,$SPEED,$FADE)
    While $FADE = 1
    WinSetTrans($WINTITLE,"",0)
    GUISetState(@SW_Show)
    $TRANSPARENCY=0

    For $TRANSPARENCY = 0 To 255 Step +$SPEED
    WinSetTrans($Wintitle,$TEXT,$TRANSPARENCY)
    Sleep(10)
    Next
    ExitLoop
    WEnd

    While $FADE = 2
    $TRANSPARENCY=255

    For $TRANSPARENCY = 255 To 0 Step -$SPEED
    WinSetTrans($WINTITLE,$TEXT,$TRANSPARENCY)
    Sleep(10)
    Next
    ExitLoop
    WEnd
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    #cs
    $Wintitle = Fenstertitel
    $Text = Fenstertest
    $SPEED = Schnelligkeit des Fadens (1-255)
    $FADE = 1 - Fade In | 2 - Fade Out
    #ce

    [/autoit] [autoit][/autoit] [autoit][/autoit]