The example below displays what I would like to have - only the soft fade between the switching images is missing.
Can you give me ideas on how to do this? Is Sprite/Screen necessary for this?
Code: Select all
BannerImage = 1
AmountOfBannerImages = 4
Dim BannerSet (AmountOfBannerImages - 1)
For Index = 1 To 4
BannerSet (Index) = LoadImage (#PB_Any, "banner" + Str (Index) + ".jpg")
Next
Macro CVS_RESIZEDATA
WindowWidth (wnd) / 2 - 360, 50, 720, 260
EndMacro
Procedure SetBannerMixture (ImageOld. i, ImageNew. i, Alpha. w)
Shared cvs
StartDrawing (CanvasOutput (cvs))
Box (0, 0, GadgetWidth (cvs), GadgetHeight (cvs), RGB (0, 0, 0))
DrawImage (ImageID (ImageOld), 0, 0, GadgetWidth (cvs), GadgetHeight (cvs))
DrawImage (ImageID (ImageNew), 0, 0, GadgetWidth (cvs), GadgetHeight (cvs))
StopDrawing ()
EndProcedure
Declare SizeWindowCallback ()
Declare BannerTimer ()
Declare BannerTimerLrg ()
Declare Event_Timer ()
wnd = OpenWindow (#PB_Any, 0, 0, 0, 0, "Background", #PB_Window_Background)
AddWindowTimer (wnd, 2500, 2500)
AddWindowTimer (wnd, 5, 5)
cvs = CanvasGadget (#PB_Any, CVS_RESIZEDATA)
BindEvent (#PB_Event_Timer, @ Event_Timer ())
BindEvent (#PB_Event_SizeWindow, @ SizeWindowCallback (), wnd)
Procedure BannerTimer ()
Shared BannerImage
Shared BannerSet ()
Static CurrBannerImage
Static FadeProcessTrigered. b
Static FadeProgress. i
If BannerImage <> CurrBannerImage
FadeProcessTriggered = #True
FadeProgress = 0
CurrBannerImage = BannerImage
EndIf
If FadeProcessTriggered = #True
If FadeProgress = 256
FadeProgress = 0
FadeProcessTriggered = #False
Else
FadeProcess + 1
SetBannerMixture (BannerSet (CurrBannerImage), BannerSet (BannerImage), FadeProcess)
EndIf
EndIf
EndProcedure
Procedure BannerTimerLrg ()
Shared BannerImage, AmountOfBannerImages
BannerImage = BannerImage + 1
If BannerImage = AmountOfBannerImages + 1
BannerImage = 1
EndIf
EndProcedure
Procedure Event_Timer ()
Select EventTimer ()
Case 5
BannerTimer ()
Case 2500
BannerTimerLrg ()
EndSelect
EndProcedure
Procedure SizeWindowCallback ()
Shared wnd, cvs
ResizeGadget (cvs, CVS_RESIZEDATA)
EndProcedure
http://enhash.bplaced.net/users/enhash/ ... anners.zip