Sign in to follow this  
Followers 0

Text Effect

17 posts in this topic

Posted (edited)

Creating text effect...

#include <GUIConstants.au3>
#include <Color.au3>

Opt("GUIOnEventMode", 1)

$Width = 550
$Height = 500
$Form = GUICreate("Text Effect", $Width, $Height, -1, -1)
GUISetBkColor(0x666666)
GUISetState()
GUISetOnEvent($GUI_EVENT_CLOSE, "Quit")

TextEffect("Text Effect !", 15, 300, 50, 40, 10, 20, 0x000000, 0x00FF00, 25, 25, 1, 1)
TextEffect("Text Effect !", 35, 200, 50, 40, 10, 20, 0x000000, 0xFF0000, 25, 25, 1, 1)
TextEffect("Text Effect !", 55, 100, 50, 40, 10, 20, 0x000000, 0x0000FF, 25, 25, 1, 1)

While 1
    Sleep(100)
WEnd

Func TextEffect($Text, $Left, $Top, $Fontsize, $Fontspace, $Step, $Delay, $Color, $Color2, $Colorstep, $Colorstep2, $Shadow, $Gradient)
    $Color = Colors($Color, $Color2, $Colorstep, $Colorstep2)
    $Letters = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,0,1,2,3,4,5,6,7,8,9"
    $Let = StringSplit($Letters, ",", 1)
    $Len = StringLen($Text)
    Local $Control[$Len + 1], $Fontspace2 = 0
    For $i = 1 To $Len
        $pLeft = (($Left + ($i * $Fontspace)) - $Fontspace2) - $Fontspace
        $Control[$i] = GUICtrlCreateLabel("", $pLeft, 0, $Fontspace, $Fontspace * 2)
        GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
        GUICtrlSetFont(-1, $Fontsize)
        $sLeft = StringLeft($Text, $i)
        If $i <> 1 Then $sLeft = StringTrimLeft($sLeft, $i - 1)
        If $sLeft <> " "  Then
            For $z = 1 To $Step
                GUICtrlSetPos(-1, $pLeft, $z * ($Top / $Step))
                $Text2 = $Let[Random(1, UBound($Let) - 1, 1)]
                GUICtrlSetData(-1, $Text2)
                GUICtrlSetColor(-1, $Color[$z * ($Colorstep / $Step)])
                Sleep($Delay)
            Next
        EndIf
        GUICtrlSetData(-1, $sLeft)
        If $Gradient = 1 Then
            If $i < $Len / 2 Then
                GUICtrlSetColor(-1, $Color[$Colorstep - ($i * (($Colorstep / 2) / ($Len / 2)))])
            Else
                GUICtrlSetColor(-1, $Color[($Colorstep / 2) + (($i - ($Len / 2)) * (($Colorstep / 2) / ($Len / 2)))])
            EndIf
        EndIf
        If $Shadow = 1 Then
            GUICtrlCreateLabel($sLeft, $pLeft - 3, $Top + 3, $Fontspace, $Fontspace * 2)
            GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
            GUICtrlSetColor(-1, $Color[$Step / 1.2])
            GUICtrlSetFont(-1, $Fontsize)
            GUICtrlSetPos($Control[$i], $pLeft, $Top)
        EndIf
        If $sLeft = "i"  Or $sLeft = "ı"  Then $Fontspace2 += $Fontspace / 2
        If $sLeft = "f"  Or $sLeft = "l"  Then $Fontspace2 += $Fontspace / 2.5
    Next
EndFunc   ;==>TextEffect

Func Colors($nStartColor = 0x00FF00, $nEndColor = 0x000000, $Step = 50, $Step2 = 50)
    Local $color1R = _ColorGetRed($nStartColor)
    Local $color1G = _ColorGetGreen($nStartColor)
    Local $color1B = _ColorGetBlue($nStartColor)
    Local $nStepR = (_ColorGetRed($nEndColor) - $color1R) / $Step2
    Local $nStepG = (_ColorGetGreen($nEndColor) - $color1G) / $Step2
    Local $nStepB = (_ColorGetBlue($nEndColor) - $color1B) / $Step2
    For $i = 1 To $Step
        $sColor = "0x" & StringFormat("%02X%02X%02X", $color1R + $nStepR * $i, $color1G + $nStepG * $i, $color1B + $nStepB * $i)
        If $i = 1 Then
            $Colors = $sColor
        Else
            $Colors &= "," & $sColor
        EndIf
    Next
    $Colors = StringSplit($Colors, ",", 1)
    Return $Colors
EndFunc   ;==>Colors

Func Quit()
    DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $Form, "int", 500, "long", 0x00090000)
    Exit
EndFunc   ;==>Quit

Edit : Added Gradient & Shadow.

Edited by Jex

Share this post


Link to post
Share on other sites



Posted

Looks good!!! :)

Share this post


Link to post
Share on other sites

Posted

Nice! Maybe add:

While 1
 Sleep(100)
WEnd

It was fine till the action stopped then it would spike up in the task manager to 25% CPU usage... :)

Share this post


Link to post
Share on other sites

Posted (edited)

Nice! Maybe add:

While 1
 Sleep(100)
WEnd

It was fine till the action stopped then it would spike up in the task manager to 25% CPU usage... :)

I'm not noticed CPU usage thanks ^_^ I'm didn't think empty while/wend loop will use like that much CPU :) Edited by Jex

Share this post


Link to post
Share on other sites

Posted

Yeah, that seems to make the CPU Think real hard :) LOL

Share this post


Link to post
Share on other sites

Posted

Cool!

8)

Share this post


Link to post
Share on other sites

Posted

:) Me likes! One complaint though:

Func Quit()
	For $i = 255 To 1 Step - 1
		WinSetTrans($Form, "", $i)
	Next
	Exit
EndFunc  ;==>Quit

That's TERRIBLY slow!! Check THIS out:

Func Quit()
	DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $Form, "int", 200, "long", 0x00090000)
	Exit
EndFunc  ;==>Quit

^_^

Share this post


Link to post
Share on other sites

Posted

This is really nice, pretty creative too. Good job! :)

Share this post


Link to post
Share on other sites

Posted

:) Me likes! One complaint though:

Func Quit()
	For $i = 255 To 1 Step - 1
		WinSetTrans($Form, "", $i)
	Next
	Exit
EndFunc ;==>Quit

That's TERRIBLY slow!! Check THIS out:

Func Quit()
	DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $Form, "int", 200, "long", 0x00090000)
	Exit
EndFunc ;==>Quit

:)

Nearly instantly happen for..next method in my pc for that reason i'm not think that will be very slow in other pc's.

I'm added your DllCall thanks ^_^

Share this post


Link to post
Share on other sites

Posted

That's soooo awesome :)

Too bad when you change the text you want to animate, it doesn't work 100% correctly (overlapping characters &/or overlapping colours)

I'd love to see this fixed up and made into a misc. UDF :)

Share this post


Link to post
Share on other sites

Posted

it gives error in 23 line

Resolve it.... or update to new version of autoit.

Share this post


Link to post
Share on other sites

Posted

Thank youuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu!!!!!!!!!

Share this post


Link to post
Share on other sites

Posted

it gives error in 23 line

Resolve it.... or update to new version of autoit.

It's a simple line wrap error copying from the code box. Just backspace line 24 up until it appends to the end of line 23.

Works perfectly!

Share this post


Link to post
Share on other sites

Posted

Well done! Great Effect! Thank you for sharing it :)

Share this post


Link to post
Share on other sites

Posted

D:\Autoit\text effect.au3 (23) : ==> Unterminated string.:

$Letters = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v

>Exit code: 1 Time: 0.797

---------

fix the error

Share this post


Link to post
Share on other sites

Posted

The code is correct. The code box shows a return after the "v" as you posted above.

.... a simple press of the delete key will remove the return and bring the next line up.

then it works fine

8)

Share this post


Link to post
Share on other sites

Posted

D:\Autoit\text effect.au3 (23) : ==> Unterminated string.:

$Letters = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v

>Exit code: 1 Time: 0.797

---------

fix the error

You didn't bother to look just 2 posts back - ResNullius gave the answer there. ;)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0