RasterImageAnimator Class (original) (raw)

Summary

Animates an image that has time-based frames.

Syntax

C#

Objective-C

C++/CLI

Python

public class RasterImageAnimator : IDisposable 
@interface LTRasterImageAnimator : NSObject 
public ref class RasterImageAnimator : public System.IDisposable   
class RasterImageAnimator(IDisposable): 

Example

This example will load an animated GIF file and paint on the surface of the given Panel.

using Leadtools; using Leadtools.Codecs; using Leadtools.ImageProcessing; using Leadtools.Drawing; public void RasterImageAnimatorExample(Panel panel) { // Initialize the RasterCodecs object RasterCodecs codecs = new RasterCodecs(); // When loading the animated GIF file, we have two means to load all pages into memory // Option 1: Set the Load All Pages to true, then specify just the filename string fileName = Path.Combine(LEAD_VARS.ImagesDir, "Eye.gif"); codecs.Options.Load.AllPages = true; RasterImage animatedImage = codecs.Load(fileName); // Option 2: Specify which pages to load, -1 means all pages // Load the animated GIF file //RasterImage animatedImage = codecs.Load(filename, 0, CodecsLoadByteOrder.Bgr, 1, -1) // 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 { LeadRect srcRect = new LeadRect(0, 0, targetImage.ImageWidth, targetImage.ImageHeight); LeadRect updateRect; LeadRect destRect; 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.PostClear: case RasterImageAnimatorState.PostRender: // Get the area in the target image that has changed updateRect = animator.GetUpdateRectangle(true); // Paint it destRect = new LeadRect(0, 0, targetImage.ImageWidth, targetImage.ImageHeight); RasterImagePainter.Paint(targetImage, g, srcRect, updateRect, destRect, destRect, props); break; default: break; } } while (state != RasterImageAnimatorState.End); g.Dispose(); animator.Dispose(); targetImage.Dispose(); animatedImage.Dispose(); codecs.Dispose(); } static class LEAD_VARS { public const string ImagesDir = @"C:\LEADTOOLS22\Resources\Images"; }

Leadtools Assembly

Convert(byte[],int,int,int,int,RasterByteOrder,RasterByteOrder,RasterColor[],RasterColor[],int,int,int,RasterConvertBufferFlags) Method

Convert(byte[],int,int,int,int,RasterByteOrder,RasterByteOrder,RasterColor[],RasterColor[],RasterColor16[],RasterColor16[],int,int,int,RasterConvertBufferFlags) Method

Convert(IntPtr,int,int,int,RasterByteOrder,RasterByteOrder,RasterColor[],RasterColor[],int,int,int,RasterConvertBufferFlags) Method

Convert(IntPtr,int,int,int,RasterByteOrder,RasterByteOrder,RasterColor[],RasterColor[],RasterColor16[],RasterColor16[],int,int,int,RasterConvertBufferFlags) Method