public int Delay { get; }
@property (nonatomic, assign, readonly) NSUInteger delay;
public:
property int Delay {
int get();
}
Delay # get (RasterImageAnimator)
An integer value that indicates the time remaining in the current wait state of an animation playback.
The delay is in milliseconds (ms).
using Leadtools;
using Leadtools.Codecs;
using Leadtools.ImageProcessing;
using Leadtools.Drawing;
public void RasterImageAnimatorClearUpdateRectangleExample(Panel panel)
{
// Initialize the RasterCodecs object
RasterCodecs codecs = new RasterCodecs();
// Load the animated GIF file
string fileName = Path.Combine(LEAD_VARS.ImagesDir, "Eye.gif");
RasterImage animatedImage = codecs.Load(fileName, 0, CodecsLoadByteOrder.Bgr, 1, -1); // load all pages
// 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;
int index;
state = animator.Process();
switch (state)
{
case RasterImageAnimatorState.WaitDelay:
case RasterImageAnimatorState.WaitInputDelay:
//If the current GIF frame has delay info, force the animation to delay in the animation
Stopwatch s = new Stopwatch();
s.Start();
while (s.Elapsed < TimeSpan.FromMilliseconds(animator.Delay))
{
Application.DoEvents();
}
s.Stop();
animator.CancelWait();
break;
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.PostRender:
index = animator.Index;
if ((index % 2) != 0)
animator.ClearUpdateRectangle();
// 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:\LEADTOOLS23\Resources\Images";
}
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document