vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Animierte GIFs: Picturebox trifft auf Grenzen 
Autor: Manfred X
Datum: 18.09.14 10:56

Hallo!

Das Windows.Forms.Picturebox-Control kann auch animierte GIFs anzeigen bzw. abspielen
(Image, Backgroundimage).

Ich habe aber feststellen müssen, daß GIFs, die über mehr als ca. 35 Frames verfügen,
dieses Control zu "überfordern" scheinen.

Es kommt NICHT zu einer Ausnahme, aber die Picturebox zeigt während des Abspielens
plötzlich nur noch das ErrorImage. Danach können in der betroffenen Instanz der
Picturebox auch keine anderen Bild-Streams angezeigt werden. Das erstellte Objekt
scheint durch das GIF beschädigt zu werden (ermittelt auf FW 4.0).

Besitzt jemand nähere Informationen dazu?

Hier mein vorläufiger Workaround:
Bei GIFs wird die Zahl der Frames ermittelt.
Liegen "zu viele" Frames vor, wird nur das erste Frame angezeigt.

 ''' <summary>Kontrollierte Anzeige eines Bildes in der Picturebox</summary>
 ''' <param name="pbox">anzeigende Picturebox</param>
 ''' <param name="img">anzuzeigendes Bild</param>
 ''' <param name="usebackgroundimage">auf Hintergrundbild zuweisen?</param>
 Private Sub ShowPic(ByVal pbox As PictureBox, ByVal img As Image, _
                 Optional ByVal usebackgroundimage As Boolean = False)
 
    'Bei Gifs mit mehr als etwa 35 Frames verabschiedet 
    'sich das Display der Picturebox
 
    Const MaxFrames As Integer = 35
 
    If img Is Nothing Then Exit Sub
 
    With pbox
       If Not img.RawFormat.Equals(Imaging.ImageFormat.Gif) OrElse _
          img.GetFrameCount(Imaging.FrameDimension.Time) <= MaxFrames Then
 
          'kein GIF oder GiF mit maximal 35 Frames
          If usebackgroundimage Then
             .BackgroundImage = img
          Else
             .Image = img
          End If
       Else
          If img.SelectActiveFrame(Imaging.FrameDimension.Time, 0) = 0 Then
             'nur den ersten Frame des GIF zeigen
             If usebackgroundimage Then
                .BackgroundImage = New Bitmap(img)
             Else
                .Image = New Bitmap(img)
             End If
          Else
             'erster Frame des GIF nicht wählbar
             If usebackgroundimage Then
                .BackgroundImage = .ErrorImage
             Else
                .Image = .ErrorImage
             End If
         End If
       End If
    End With
End Sub
Ergänzender Hinweis:
Die Ermittlung des GIF-Bildtyps per Datei-Extension ist unzureichend.
Das "ImageFormat" (Bmp, Jpg, Gif, ...) eines Bildes wird bei GDI+
anhand der tatsächlichen Daten (Codierung) ermittelt.

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Animierte GIFs: Picturebox trifft auf Grenzen2.118Manfred X18.09.14 10:56
Re: Animierte GIFs: Picturebox trifft auf Grenzen1.389cookstdu18.09.14 12:53
Re: Animierte GIFs: Picturebox trifft auf Grenzen1.376Manfred X18.09.14 13:52
Re: Animierte GIFs: Picturebox trifft auf Grenzen1.373Manfred X18.09.14 15:05
Workaround,vorläufig1.317Manfred X19.09.14 09:38
Re: Animierte GIFs: Picturebox trifft auf Grenzen1.467Kuno6021.09.14 13:21
ImageAnimator trifft auf Grenzen1.326Manfred X22.09.14 09:40
Re: ImageAnimator trifft auf Grenzen1.339Kuno6022.09.14 12:27
Re: ImageAnimator trifft auf Grenzen1.340Manfred X22.09.14 13:40
Re: ImageAnimator trifft auf Grenzen1.389Kuno6022.09.14 14:32

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel