Code: Alles auswählen
;**************************************************************
;****
;**** Image Animation Demo
;****
;**** by Kaeru Gaman, 2009-03-10
;****
;**** PB Ver. 4.30
;****
;**************************************************************
CreateImage(0, 261,161) ; Maske1
StartDrawing(ImageOutput(0))
Box(0,0,260,160,$400000) ; dunkelblauer Hintergrund
FrontColor($40C020) ; Linienfarbe
Line( 0, 80, 260, 0) ; Abszisse
Line( 130, 0, 0, 160) ; Ordinate
For n=0 To 130 Step 10
Line( 130+n, 77, 0, 7 ) ; Grid
Line( 130-n, 77, 0, 7 )
Line( 127, 80+n, 7, 0 )
Line( 127, 80-n, 7, 0 )
Next
DrawingMode(#PB_2DDrawing_Outlined)
Circle( 130, 80, 4)
StopDrawing()
;**************************************************************
Dim Values.l(261)
For n=0 To 261
Values(n) = 80 - 60 * Sin( (n-130) / 15.7 )
Next
;**************************************************************
CreateImage(1,261,161) ; Maske2
StartDrawing(ImageOutput(1))
;* Koordinatensystem
DrawImage(ImageID(0),0,0)
;* Kurve
For n=0 To 261
Plot( n, Values(n), $00FFFF)
Next
StopDrawing()
;**************************************************************
CreateImage(2,261,161) ; BildBuffer
Stepper = 0
StartDrawing(ImageOutput(2))
;* Hintergrund
DrawImage(ImageID(1),0,0)
;* Punkt
Circle( Stepper, Values(Stepper), 7, $C08040)
StopDrawing()
;**************************************************************
OpenWindow(0, 0,#PB_Ignore, 300,200, "Image Animation Demo")
ImageGadget(0, 18,18,261,161,ImageID(2),#PB_Image_Border)
;**************************************************************
TIMER = ElapsedMilliseconds() + 50 ; Refresh 50ms = 20 FpS
;**************************************************************
Repeat
Event = WaitWindowEvent(10)
Select Event
;**** Timer
Case #Null
If ElapsedMilliseconds() >= TIMER
TIMER = ElapsedMilliseconds() + 50
Stepper +1
If Stepper > 261
Stepper = 0
EndIf
StartDrawing(ImageOutput(2))
;* Hintergrund
DrawImage(ImageID(1),0,0)
;* Punkt
Circle( Stepper, Values(Stepper), 7, $C08040)
StopDrawing()
SetGadgetState(0, ImageID(2))
EndIf
;**** Close
Case #PB_Event_CloseWindow
EXIT = 1
EndSelect
Until EXIT
;**************************************************************
- Line korrigiert
- Timer über AddWindowTimer
Code: Alles auswählen
;**************************************************************
;****
;**** Image Animation Demo
;****
;**** by Kaeru Gaman, 2009-03-10 (4.30)
;****
;**** PB Ver. 4.40 rev. 2010-01-16
;****
;**************************************************************
CreateImage(0, 261,161) ; Maske1
StartDrawing(ImageOutput(0))
Box(0,0,260,160,$400000) ; dunkelblauer Hintergrund
FrontColor($40C020) ; Linienfarbe
Line( 0, 80, 260, 1) ; Abszisse
Line( 130, 0, 1, 160) ; Ordinate
For n=0 To 130 Step 10
Line( 130+n, 77, 1, 7 ) ; Grid
Line( 130-n, 77, 1, 7 )
Line( 127, 80+n, 7, 1 )
Line( 127, 80-n, 7, 1 )
Next
DrawingMode(#PB_2DDrawing_Outlined)
Circle( 130, 80, 4) ; Origo
StopDrawing()
;**************************************************************
Dim Values.l(260)
For n=0 To 260
Values(n) = 80 - 60 * Sin( (n-130) / 15.7 )
Next
;**************************************************************
CreateImage(1,261,161) ; Maske2
StartDrawing(ImageOutput(1))
;* Koordinatensystem
DrawImage(ImageID(0),0,0)
;* Kurve
For n=0 To 260
Plot( n, Values(n), $00FFFF)
Next
StopDrawing()
;**************************************************************
CreateImage(2,261,161) ; BildBuffer
Stepper = 0
StartDrawing(ImageOutput(2))
;* Hintergrund
DrawImage(ImageID(1),0,0)
;* Punkt
Circle( Stepper, Values(Stepper), 7, $C08040)
StopDrawing()
;**************************************************************
OpenWindow(0, 0,#PB_Ignore, 300,200, "Image Animation Demo")
ImageGadget(0, 18,18,261,161,ImageID(2),#PB_Image_Border)
;**************************************************************
AddWindowTimer( 0, 0, 50 ) ; Refresh 50ms = 20 FpS
;**************************************************************
Repeat
Event = WaitWindowEvent()
Select Event
;**** Timer
Case #PB_Event_Timer
Stepper +1
If Stepper > 260
Stepper = 0
EndIf
StartDrawing(ImageOutput(2))
;* Hintergrund
DrawImage(ImageID(1),0,0)
;* Punkt
Circle( Stepper, Values(Stepper), 7, $C08040)
StopDrawing()
SetGadgetState(0, ImageID(2))
;**** Close
Case #PB_Event_CloseWindow
EXIT = 1
EndSelect
Until EXIT
;**************************************************************