Leadtools Send comments on this topic. | Back to Introduction - All Topics | Help Version 16.5.9.25
Index Property
See Also  Example
Leadtools Namespace > RasterImageAnimator Class : Index Property



Gets or sets the index of the current frame during animation playback.

Syntax

Visual Basic (Declaration)  
Public Property Index As Integer
Visual Basic (Usage) Copy Code
Dim instance As RasterImageAnimator
Dim value As Integer
 
instance.Index = value
 
value = instance.Index
C#  
public int Index {get; set;}
C++/CLI  
public:
property int Index {
   int get();
   void set (int value);
}

Return Value

An integer value that indicates the index of the current frame during animation playback.

Example

This example uses Index to skip frames during a playback

Visual Basic Copy Code
Sub RasterImageAnimatorIndexExample(ByVal panel As Panel)
   ' Initialize the RasterCodecs object
   RasterCodecs.Startup()
   Dim codecs As New RasterCodecs()
   ' Load the animated GIF file
   Dim fileName As String = LeadtoolsExamples.Common.ImagesPath.Path + "Eye.gif"
   Dim animatedImage As RasterImage = codecs.Load(fileName)

   ' Create the target image, we want it to be in the animated image size
   Dim targetImage As New RasterImage( _
      RasterMemoryFlags.Conventional, _
      animatedImage.AnimationGlobalSize.Width, _
      animatedImage.AnimationGlobalSize.Height, _
      animatedImage.BitsPerPixel, _
      animatedImage.Order, _
      animatedImage.ViewPerspective, _
      Nothing, _
      IntPtr.Zero, _
      0)

   ' Copy the palette from the animated image to this newly created image
   animatedImage.CopyPaletteTo(targetImage)

   ' Create the RasterImageAnimator object
   Dim animator As New RasterImageAnimator(targetImage, animatedImage)

   ' Animate it

   ' Use GDI+ paint engine to support transparent colors
   Dim props As RasterPaintProperties = RasterPaintProperties.Default
   props.PaintEngine = RasterPaintEngine.GdiPlus

   Dim g As Graphics = panel.CreateGraphics()

   Dim state As RasterImageAnimatorState
   Do
      Dim srcRect As New Rectangle(0, 0, targetImage.ImageWidth, targetImage.ImageHeight)
      Dim updateRect As Rectangle
      Dim destRect As Rectangle
      Dim index As Integer

      state = animator.Process()

      Select Case (state)
         Case RasterImageAnimatorState.WaitDelay, _
            RasterImageAnimatorState.WaitInputDelay, _
            RasterImageAnimatorState.Render
            'Continue processing

         Case RasterImageAnimatorState.WaitInput
            ' In case the animated image has the "wait for user input" flags,
            ' cancel the waiting
            animator.CancelWait()

         Case RasterImageAnimatorState.PreRender
            index = animator.Index
            index = index + 1
            animator.Index = index

         Case RasterImageAnimatorState.PostRender
            ' Get the area in the target image that has changed
            updateRect = animator.GetUpdateRectangle(True)

            ' Paint it
            destRect = New Rectangle(0, 0, targetImage.ImageWidth, targetImage.ImageHeight)

            targetImage.Paint(g, srcRect, updateRect, destRect, destRect, props)
      End Select
   Loop While (state <> RasterImageAnimatorState.End)

   g.Dispose()

   animator.Dispose()

   targetImage.Dispose()
   animatedImage.Dispose()

   codecs.Dispose()
   RasterCodecs.Shutdown()
End Sub
C# Copy Code
void RasterImageAnimatorIndexExample(Panel panel) 

   // Initialize the RasterCodecs object 
   RasterCodecs.Startup(); 
   RasterCodecs codecs = new RasterCodecs(); 
 
   // Load the animated GIF file 
   string fileName = LeadtoolsExamples.Common.ImagesPath.Path + "Eye.gif"; 
   RasterImage animatedImage = codecs.Load(fileName); 
 
   // Create the target image, we want it to be in the animated image size 
   RasterImage targetImage = new RasterImage( 
      RasterMemoryFlags.Conventional, 
      animatedImage.AnimationGlobalSize.Width, 
      animatedImage.AnimationGlobalSize.Height, 
      animatedImage.BitsPerPixel, 
      animatedImage.Order, 
      animatedImage.ViewPerspective, 
      null, 
      IntPtr.Zero, 
      0); 
 
   // Copy the palette from the animated image to this newly created image 
   animatedImage.CopyPaletteTo(targetImage); 
 
   // Create the RasterImageAnimator object 
   RasterImageAnimator animator = new RasterImageAnimator(targetImage, animatedImage); 
 
   // Animate it 
 
   // Use GDI+ paint engine to support transparent colors 
   RasterPaintProperties props = RasterPaintProperties.Default; 
   props.PaintEngine = RasterPaintEngine.GdiPlus; 
 
   Graphics g = panel.CreateGraphics(); 
 
   RasterImageAnimatorState state; 
   do 
   { 
      Rectangle srcRect = new Rectangle(0, 0, targetImage.ImageWidth, targetImage.ImageHeight); 
      Rectangle updateRect; 
      Rectangle destRect; 
      int index; 
 
      state = animator.Process(); 
 
      switch(state) 
      { 
         case RasterImageAnimatorState.WaitDelay: 
         case RasterImageAnimatorState.WaitInputDelay: 
         case RasterImageAnimatorState.Render: 
            // Continue processing 
            break; 
 
         case RasterImageAnimatorState.WaitInput: 
            // In case the animated image has the "wait for user input" flags, 
            // cancel the waiting 
            animator.CancelWait(); 
            break; 
 
         case RasterImageAnimatorState.PreRender: 
            index = animator.Index; 
            index++; 
            animator.Index = index; 
            break; 
 
         case RasterImageAnimatorState.PostRender: 
            // Get the area in the target image that has changed 
            updateRect = animator.GetUpdateRectangle(true); 
 
            // Paint it 
            destRect = new Rectangle(0, 0, targetImage.ImageWidth, targetImage.ImageHeight); 
 
            targetImage.Paint(g, srcRect, updateRect, destRect, destRect, props); 
            break; 
 
         default: 
            break; 
      } 
   } 
   while(state != RasterImageAnimatorState.End); 
 
   g.Dispose(); 
 
   animator.Dispose(); 
 
   targetImage.Dispose(); 
   animatedImage.Dispose(); 
 
   codecs.Dispose(); 
   RasterCodecs.Shutdown(); 
}

Remarks

You can use the Index property to skip frames during a playback if required.

Requirements

Target Platforms: Microsoft .NET Framework 3.0, Windows XP, Windows Server 2003 family, Windows Server 2008 family

See Also