HILFE IN VB 6 (animationen)

S

stevie

Wie wird ein anim.gif in VB6 eingebunden und gestartet?
d.h. wenn ich das Projekt als EXE erstelle, soll mn sehen, wie sich das gif bewegt.


THX
 
Hier die Antwort. Viel Spaß

'GIF-Datei auslesen und Einzelbilder im
'Variant-Array varImage zwischenspeichern
Public Function GIF_LADEN(strDatei As String, _
varImage As Variant) As Boolean
GIF_LADEN = False
If Dir$(strDatei) = "" Or strDatei = "" Then
MsgBox "Datei " & strDatei & " nicht gefunden.", _
vbInformation
Exit Function
End If

On Error GoTo Fehler
Dim DNr As Integer
Dim Bild_Header As String
Dim Datei_Header As String
Dim strBuffer As String
Dim strBildBuffer As String
Dim intBildZaehler As Integer
Dim lngX As Long
Dim lngY As Long
Dim lngOffsetX As Long
Dim lngOffsetY As Long
Dim lngWarteZeit As Long
Dim strGifEnde As String

strGifEnde = Chr(0) & Chr(33) & Chr(249)
For lngX = 1 To varImage.Count - 1
Unload varImage(lngX)
Next lngX
DNr = FreeFile
Open strDatei For Binary Access Read As DNr
strBuffer = String(LOF(DNr), Chr(0))
Get #DNr, , strBuffer
Close DNr
lngX = 1
intBildZaehler = 0
lngY = InStr(1, strBuffer, strGifEnde) + 1
Datei_Header = Left(strBuffer, lngY)
If Left$(Datei_Header, 3) <> "GIF" Then
MsgBox "Bei der gewaehlten Datei handelt es " + _
"sich nicht um eine Gif-Datei.", vbInformation
Exit Function
End If
GIF_LADEN = True
lngX = lngY + 2
If Len(Datei_Header) >= 127 Then
lngZeit& = Asc(Mid(Datei_Header, 126, 1)) + _
(Asc(Mid(Datei_Header, 127, 1)) * 256&)
Else
lngZeit = 0
End If
Do
intBildZaehler = intBildZaehler + 1
lngY = InStr(lngX, strBuffer, strGifEnde) + 3
If lngY > Len(strGifEnde) Then
DNr = FreeFile
Open "tmp.gif" For Binary As DNr
strBildBuffer = String(Len(Datei_Header) + _
lngY - lngX, Chr(0))
strBildBuffer = Datei_Header & _
Mid(strBuffer, lngX - 1, lngY - lngX)
Put #DNr, 1, strBildBuffer
Bild_Header = Left(Mid(strBuffer, lngX - 1, _
lngY - lngX), 16)
Close DNr
lngWarteZeit = ((Asc(Mid(Bild_Header, 4, 1))) + _
(Asc(Mid(Bild_Header, 5, 1)) * 256&)) * 10&
If intBildZaehler > 1 Then
lngOffsetX = Asc(Mid(Bild_Header, 9, 1)) + _
(Asc(Mid(Bild_Header, 10, 1)) * 256&)
lngOffsetY = Asc(Mid(Bild_Header, 11, 1)) + _
(Asc(Mid(Bild_Header, 12, 1)) * 256&)
Load varImage(intBildZaehler - 1)
varImage(intBildZaehler - 1).Left = varImage(0).Left + _
(lngOffsetX * Screen.TwipsPerPixelX)
varImage(intBildZaehler - 1).Top = varImage(0).Top + _
(lngOffsetY * Screen.TwipsPerPixelY)
End If
varImage(intBildZaehler - 1).Tag = lngWarteZeit
varImage(intBildZaehler - 1).Picture = _
LoadPicture("tmp.gif")
Kill ("tmp.gif")
lngX = lngY
End If
DoEvents
Loop Until lngY = 3
If lngX < Len(strBuffer) Then
DNr = FreeFile
Open "tmp.gif" For Binary As DNr
strBildBuffer = String(Len(Datei_Header) + _
Len(strBuffer) - lngX, Chr(0))
strBildBuffer = Datei_Header & _
Mid(strBuffer, lngX - 1, Len(strBuffer) - lngX)
Put #DNr, 1, strBildBuffer
Bild_Header = Left(Mid(strBuffer, lngX - 1, _
Len(strBuffer) - lngX), 16)
Close DNr
lngWarteZeit = ((Asc(Mid(Bild_Header, 4, 1))) + _
(Asc(Mid(Bild_Header, 5, 1)) * 256)) * 10
If intBildZaehler > 1 Then
lngOffsetX = Asc(Mid(Bild_Header, 9, 1)) + _
(Asc(Mid(Bild_Header, 10, 1)) * 256)
lngOffsetY = Asc(Mid(Bild_Header, 11, 1)) + _
(Asc(Mid(Bild_Header, 12, 1)) * 256)
Load varImage(intBildZaehler - 1)
varImage(intBildZaehler - 1).Left = varImage(0).Left + _
(lngOffsetX * Screen.TwipsPerPixelX)
varImage(intBildZaehler - 1).Top = varImage(0).Top + _
(lngOffsetY * Screen.TwipsPerPixelY)
End If
varImage(intBildZaehler - 1).Tag = lngWarteZeit
varImage(intBildZaehler - 1).Picture = _
LoadPicture("tmp.gif")
Kill ("tmp.gif")
End If
lngEinzelPic = varImage.Count - 1
Exit Function
Fehler:
MsgBox "Fehler Nummer. " & Err.Number & _
" beim Lesen der Datei.", vbInformation
GIF_LADEN = False
On Error GoTo 0
End Function

'Bildsequenzen anzeigen
Private Sub Timer1_Timer()
If lngBildAnzahl < lngEinzelPic Then
Image1(lngBildAnzahl).Visible = False
lngBildAnzahl = lngBildAnzahl + 1
Image1(lngBildAnzahl).Visible = True
Timer1.Interval = CLng(Image1(lngBildAnzahl).Tag)
Else
lngBildAnzahl = 0
For lngX = 1 To Image1.Count - 1
Image1(lngX).Visible = False
Next lngX
Image1(lngBildAnzahl).Visible = True
Timer1.Interval = CLng(Image1(lngBildAnzahl).Tag)
End If
End Sub
:smoke:
 
Bewegtes GIF anzeigen - so kompliziert?

Hallo,

ich suche auch eine Möglichkeit, ein bewegtes GIF
in VB6 anzuzeigen. Kann das sein, dass das so
kompliziert ist, wie hier beschrieben?

Hat niemand eine kurze und knackige Lösung
für dieses Problem?

:(
 
merci

Danke dir DrSoong,

immer wieder erstaunlich, was es für nützliche Seiten
gibt - und die ich noch nicht kenne.
:)
 
Zurück