Nicht jedesmal das Image mit CatchImage überschreiben.
Einmal am Anfang alle Bilder einmal übernehmen und dann nach Zufall zum ImageGadget zuweisen
Code: Alles auswählen
;-TOP
#ProgramTitle = "Main Window"
#ProgramVersion = "v1.01.2"
Enumeration Windows
#Main
EndEnumeration
Enumeration MenuBar
#MainMenu
EndEnumeration
Enumeration MenuItems
#MainMenuAbout
#MainMenuExit
EndEnumeration
Enumeration Gadgets
#MainImage
EndEnumeration
Enumeration StatusBar
#MainStatusBar
EndEnumeration
; ----
UseJPEGImageDecoder()
Global Dim MyImage(6)
#Demo = 1
Procedure InitImages()
CompilerIf Not #Demo
MyImage(0) = CatchImage(#PB_Any, ?Image_flieg)
MyImage(1) = CatchImage(#PB_Any, ?Image_WF_1)
MyImage(2) = CatchImage(#PB_Any, ?Image_WF_2)
MyImage(3) = CatchImage(#PB_Any, ?Image_WF_3)
MyImage(4) = CatchImage(#PB_Any, ?Image_WF_4)
MyImage(5) = CatchImage(#PB_Any, ?Image_WF_5)
MyImage(6) = CatchImage(#PB_Any, ?Image_WF_6)
CompilerElse
MyImage(0) = CreateImage(#PB_Any, 200, 200, 32, RGB(255,255,255))
MyImage(1) = CreateImage(#PB_Any, 200, 200, 32, Random($FFFFFF, $404040))
MyImage(2) = CreateImage(#PB_Any, 200, 200, 32, Random($FFFFFF, $404040))
MyImage(3) = CreateImage(#PB_Any, 200, 200, 32, Random($FFFFFF, $404040))
MyImage(4) = CreateImage(#PB_Any, 200, 200, 32, Random($FFFFFF, $404040))
MyImage(5) = CreateImage(#PB_Any, 200, 200, 32, Random($FFFFFF, $404040))
MyImage(6) = CreateImage(#PB_Any, 200, 200, 32, Random($FFFFFF, $404040))
CompilerEndIf
EndProcedure
; ----
Procedure UpdateWindow()
Protected dx, dy
dx = WindowWidth(#Main)
dy = WindowHeight(#Main) - StatusBarHeight(#MainStatusBar) - MenuHeight()
; Resize gadgets
EndProcedure
Procedure Main()
Protected dx, dy
#MainStyle = #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_MaximizeGadget | #PB_Window_MinimizeGadget
If OpenWindow(#Main, #PB_Ignore, #PB_Ignore, 800, 600, #ProgramTitle , #MainStyle)
; Menu
CreateMenu(#MainMenu, WindowID(#Main))
MenuTitle("&File")
CompilerIf #PB_Compiler_OS = #PB_OS_MacOS
MenuItem(#PB_Menu_About, "")
CompilerElse
MenuItem(#MainMenuAbout, "About")
CompilerEndIf
; Menu File Items
CompilerIf Not #PB_Compiler_OS = #PB_OS_MacOS
MenuBar()
MenuItem(#MainMenuExit, "E&xit")
CompilerEndIf
; StatusBar
CreateStatusBar(#MainStatusBar, WindowID(#Main))
AddStatusBarField(#PB_Ignore)
; Gadgets
dx = WindowWidth(#Main)
dy = WindowHeight(#Main) - StatusBarHeight(#MainStatusBar) - MenuHeight()
ImageGadget(#MainImage, 10, 10, 200, 200, 0)
; Bind Events
BindEvent(#PB_Event_SizeWindow, @UpdateWindow(), #Main)
; Init Program
InitImages()
AddWindowTimer(#Main, 1, 1000)
; Event Loop
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Select EventWindow()
Case #Main
Break
EndSelect
Case #PB_Event_Menu
Select EventMenu()
CompilerIf #PB_Compiler_OS = #PB_OS_MacOS
Case #PB_Menu_About
PostEvent(#PB_Event_Menu, #Main, #MainMenuAbout)
Case #PB_Menu_Preferences
Case #PB_Menu_Quit
PostEvent(#PB_Event_CloseWindow, #Main, #Null)
CompilerEndIf
Case #MainMenuAbout
MessageRequester("About", #ProgramTitle + #LF$ + #ProgramVersion, #PB_MessageRequester_Info)
Case #MainMenuExit
PostEvent(#PB_Event_CloseWindow, #Main, #Null)
EndSelect
Case #PB_Event_Gadget
Select EventGadget()
EndSelect
Case #PB_Event_Timer
Select EventTimer()
Case 1
nummer = Random(6)
SetGadgetState(#MainImage, ImageID(MyImage(nummer)))
StatusBarText(#MainStatusBar, 0, "Nummer: " + nummer)
EndSelect
EndSelect
ForEver
EndIf
EndProcedure : Main()
CompilerIf Not #Demo
DataSection
Image_WF_1:
IncludeBinary "/Users/mike/Documents/PureBasic/JPG/WF_1.jpg"
Image_WF_2:
IncludeBinary "/Users/mike/Documents/PureBasic/JPG/WF_2.jpg"
Image_WF_3:
IncludeBinary "/Users/mike/Documents/PureBasic/JPG/WF_3.jpg"
Image_WF_4:
IncludeBinary "/Users/mike/Documents/PureBasic/JPG/WF_4.jpg"
Image_WF_5:
IncludeBinary "/Users/mike/Documents/PureBasic/JPG/WF_5.jpg"
Image_WF_6:
IncludeBinary "/Users/mike/Documents/PureBasic/JPG/WF_6.jpg"
Image_flieg:
IncludeBinary "/Users/mike/Documents/PureBasic/JPG/Wuerfel_ohne.jpg"
EndDataSection
CompilerEndIf