ich brauche mal etwas Unterstützung bei einem Feature in PB 5.62, dass ich bisher noch nicht genutzt habe: ImageFrames.
So wie ich es verstanden habe, wird mit AddImageFrame() quasi ein neues Image in den Dimensionen des ersten Images erzeugt und ein neuer laufender Index vergeben. Angesprochen werden die einzelnen Images mit SetImageFrame() aber immer mit der selben Image-Nummer.
Ich hoffe das stimmt soweit.
Für eine alternative ProgressBar-Animation habe ich 12 einzelne Images, die ich bisher über einzelne Image-Nummern in einem Array anspreche - das funktioniert.
Jetzt wollte ich mich daran machen, das ganze auf Frames umzustellen und wollte dazu zunächst die einzelnen Images als Frames unter einer Image-Nummer zusammenfassen. Dabei gibt es aber einen "Ungültigen Speicherzugriff"-Fehler beim 2. Frame (Frame 0 und 1 laufen). Hier der Code-Schnipsel:
Code: Alles auswählen
Enumeration
#ProgressImageHandle
#TempImageHandle
EndEnumeration
Procedure read_image_frames()
; *** 12 Images aus der DataSection in Frames einlesen
; 1. Image aus Bild in DataSection holen
CatchImage(#ProgressImageHandle, ?image0)
; 2. Image aus der DataSection holen
CatchImage(#TempImageHandle, ?image1)
; neuen Frame zum 1. Image hinzufügen
AddImageFrame(#ProgressImageHandle)
; 2. Image in neuen Frame kopieren
CopyImage(#TempImageHandle, #ProgressImageHandle)
FreeImage(#TempImageHandle)
; 3. Image aus der DataSection holen
CatchImage(#TempImageHandle, ?image2)
AddImageFrame(#ProgressImageHandle) ; <--- Hier gibt es den ungültigen Speicherzugriff
CopyImage(#TempImageHandle, #ProgressImageHandle)
FreeImage(#TempImageHandle)
; 4. Image aus der DataSection holen
CatchImage(#TempImageHandle, ?image3)
AddImageFrame(#ProgressImageHandle)
CopyImage(#TempImageHandle, #ProgressImageHandle)
FreeImage(#TempImageHandle)
; 5. Image aus der DataSection holen
CatchImage(#TempImageHandle, ?image4)
AddImageFrame(#ProgressImageHandle)
CopyImage(#TempImageHandle, #ProgressImageHandle)
FreeImage(#TempImageHandle)
; 6. Image aus der DataSection holen
CatchImage(#TempImageHandle, ?image5)
AddImageFrame(#ProgressImageHandle)
CopyImage(#TempImageHandle, #ProgressImageHandle)
FreeImage(#TempImageHandle)
; 7. Image aus der DataSection holen
CatchImage(#TempImageHandle, ?image6)
AddImageFrame(#ProgressImageHandle)
CopyImage(#TempImageHandle, #ProgressImageHandle)
FreeImage(#TempImageHandle)
; 8. Image aus der DataSection holen
CatchImage(#TempImageHandle, ?image7)
AddImageFrame(#ProgressImageHandle)
CopyImage(#TempImageHandle, #ProgressImageHandle)
FreeImage(#TempImageHandle)
; 9. Image aus der DataSection holen
CatchImage(#TempImageHandle, ?image8)
AddImageFrame(#ProgressImageHandle)
CopyImage(#TempImageHandle, #ProgressImageHandle)
FreeImage(#TempImageHandle)
; 10. Image aus der DataSection holen
CatchImage(#TempImageHandle, ?image9)
AddImageFrame(#ProgressImageHandle)
CopyImage(#TempImageHandle, #ProgressImageHandle)
FreeImage(#TempImageHandle)
; 11. Image aus der DataSection holen
CatchImage(#TempImageHandle, ?image10)
AddImageFrame(#ProgressImageHandle)
CopyImage(#TempImageHandle, #ProgressImageHandle)
FreeImage(#TempImageHandle)
; 12. Image aus der DataSection holen
CatchImage(#TempImageHandle, ?image11)
AddImageFrame(#ProgressImageHandle)
CopyImage(#TempImageHandle, #ProgressImageHandle)
FreeImage(#TempImageHandle)
EndProcedure