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)
RasterCodecs.Startup()
Dim codecs As New RasterCodecs()
Dim fileName As String = LeadtoolsExamples.Common.ImagesPath.Path + "Eye.gif"
Dim animatedImage As RasterImage = codecs.Load(fileName)
Dim targetImage As New RasterImage( _
RasterMemoryFlags.Conventional, _
animatedImage.AnimationGlobalSize.Width, _
animatedImage.AnimationGlobalSize.Height, _
animatedImage.BitsPerPixel, _
animatedImage.Order, _
animatedImage.ViewPerspective, _
Nothing, _
IntPtr.Zero, _
0)
animatedImage.CopyPaletteTo(targetImage)
Dim animator As New RasterImageAnimator(targetImage, animatedImage)
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
Case RasterImageAnimatorState.WaitInput
animator.CancelWait()
Case RasterImageAnimatorState.PreRender
index = animator.Index
index = index + 1
animator.Index = index
Case RasterImageAnimatorState.PostRender
updateRect = animator.GetUpdateRectangle(True)
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
Requirements
Target Platforms: Microsoft .NET Framework 3.0, Windows XP, Windows Server 2003 family, Windows Server 2008 family
See Also