Alex Rivera | Logout

Can a PictureBox show animated GIF in Windows Application?

Asked 2012-11-21T02:30:17.310
10

I would like to show a animated gif in .Net Winform. How to do this?

I previously used VB 6.0.

Edit
Report

1 Answer

26
  1. Put a PictureBox on a form and then specify a picture file with a Gif extension. Or:

  2. Programatically animate a gif Image loading frames into a PictureBox with code, here's the Gif class:

VB.NET

 Imports System.Drawing.Imaging
 Imports System.Drawing

 Public Class GifImage
    Private gifImage As Image
    Private dimension As FrameDimension
    Private frameCount As Integer
    Private currentFrame As Integer = -1
    Private reverse As Boolean
    Private [step] As Integer = 1

    Public Sub New(path As String)
        gifImage = Image.FromFile(path)
        'initialize
        dimension = New FrameDimension(gifImage.FrameDimensionsList(0))
        'gets the GUID
            'total frames in the animation
        frameCount = gifImage.GetFrameCount(dimension)
    End Sub

    Public Property ReverseAtEnd() As Boolean
        'whether the gif should play backwards when it reaches the end
        Get
            Return reverse
        End Get
        Set
            reverse = value
        End Set
    End Property

    Public Function GetNextFrame() As Image

        currentFrame += [step]

        'if the animation reaches a boundary...
        If currentFrame >= frameCount OrElse currentFrame < 0 Then
            If reverse Then
                [step] *= -1
                '...reverse the count
                    'apply it
                currentFrame += [step]
            Else
                currentFrame = 0
                '...or start over
            End If
        End If
        Return GetFrame(currentFrame)
    End Function

    Public Function GetFrame(index As Integer) As Image
        gifImage.SelectActiveFrame(dimension, index)
        'find the frame
        Return DirectCast(gifImage.Clone(), Image)
        'return a copy of it
    End Function
End Class

C#

using System.Drawing.Imaging;
usin
answered 2012-11-21T04:29:13.943

Your Answer