MemorY Skrevet 9. juni 2006 Del Skrevet 9. juni 2006 Jeg vil vise en .gif animasjon i en form. Problemet er at når jeg bruker picturebox og image så står animasjonen stille. Noen som vet hvordan dette er mulig? Lenke til kommentar
aadnk Skrevet 9. juni 2006 Del Skrevet 9. juni 2006 Visual Basic støtter dessverre ikke GIF-animasjoner direkte, så du må enten ty til en ekstern modul eller skrive dekomprimeringen av GIF-filen selv. Men, ettersom VB ikke akkurat er spesielt egnet for rask dekomprimering av GIF-filer, kan vi alltids gjøre en mellomting. Følgende modul trekker ut alle GIF-filene (en animert GIF-fil består av flere GIF-filer) og legger dem i en temporær mappe. Deretter åpner den de utekstrakterte filene en etter en med LoadPicture, hvoretter den legger dem i en array (høyreklikk og velg Save as) http://home.lyse.net/aadnk/Filer/AnimatedGIF.cls Deretter kan du, etter å ha lagt denne klassemodulen inn i prosjektet ditt, animere disse innlastede bilder med eksempelvis følgende kode: Option Explicit Dim bStop As Boolean Private Sub Form_Load() Dim Gif As New AnimatedGIF ' Åpner en GIF-fil Gif.OpenFile "D:\Kristian\My Pictures\Bilder\nucleus.gif" ' Vis formen Show ' Start tegne-loop DrawLoop Gif, picDest ' picDest må erstattes med bildeboksen du vil tegne bildene til End Sub Public Sub DrawLoop(File As AnimatedGIF, Destination As Control) Dim Tell As Long ' Kjør løkken inntil vi lukker programmet Do Until bStop ' Gå gjennom alle bildene i GIF-filen For Tell = 0 To File.TotalFrames ' Tegn dette bildet File.DrawFrame Tell, Destination.hdc, 0, 0 ' Vent den angitte mengden tid If File.Interval(Tell) > 0 Then File.Wait File.Interval(Tell) Else File.Wait 10 ' Dersom ingen tid er definert, bruker vi 10 ms End If ' Kjør andre hendelser DoEvents ' Stopp animering dersom vi skal til å lukke programmet If bStop Then Exit For End If Next Loop End Sub Private Sub Form_Unload(Cancel As Integer) ' Stopp animasjon bStop = True End Sub Lenke til kommentar
MemorY Skrevet 10. juni 2006 Forfatter Del Skrevet 10. juni 2006 Det funka som bare det. Tusen takk Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå