Gå til innhold

Hvordan vise en .gif animasjon


Anbefalte innlegg

Videoannonse
Annonse

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...