public enum RasterImageAnimationDisposalMethod typedef NS_ENUM(NSInteger, LTRasterImageAnimationDisposalMethod) {LTRasterImageAnimationDisposalMethodNone = 0,LTRasterImageAnimationDisposalMethodLeave = 1,LTRasterImageAnimationDisposalMethodRestoreBackground = 2,LTRasterImageAnimationDisposalMethodRestorePrevious = 3};
public final class RasterImageAnimationDisposalMethodextends java.lang.Enum<RasterImageAnimationDisposalMethod>
public enum class RasterImageAnimationDisposalMethod class RasterImageAnimationDisposalMethod(Enum):None = 0Leave = 1RestoreBackground = 2RestorePrevious = 3
| Value | Member | Description |
|---|---|---|
| 0 | None | Do nothing |
| 1 | Leave | Leave the target image as is |
| 2 | RestoreBackground | Restore the background |
| 3 | RestorePrevious | Restore the previous frame |
The RasterImageAnimator class will take care of interpreting the value of the disposal method and update the target image accordingly.
using Leadtools;using Leadtools.Codecs;using Leadtools.ImageProcessing;using Leadtools.Drawing;// WIN32 APIconst int LOGPIXELSY = 90;[DllImport("gdi32")]extern static int GetDeviceCaps(IntPtr hdc, int nIndex);[DllImport("kernel32")]extern static int MulDiv(int nNumber, int nNumerator, int nDenominator);public void AnimatedGIFExample(){// The GIF file will contain 4 framesconst int frameCount = 4;// Each frame is 128 by 128 pixels (the GIF file will have double that size)const int frameWidth = 128;const int frameHeight = 128;// Background colorsRasterColor[] backColor ={new RasterColor(0xFF, 0x00, 0x00),new RasterColor(0x00, 0xFF, 0x00),new RasterColor(0x00, 0x00, 0xFF),new RasterColor(0xFF, 0xFF, 0x00)};// Foreground colorsRasterColor[] foreColor ={new RasterColor(0xFF, 0xFF, 0x00),new RasterColor(0xFF, 0x00, 0x00),new RasterColor(0x00, 0xFF, 0x00),new RasterColor(0xFF, 0x00, 0x00)};// Delay in millisecondsint[] delay ={1000,1000,1000,1000};// Left and top, we want the frames to move to each cornerLeadPoint[] offset ={new LeadPoint(0, 0),new LeadPoint(frameWidth, 0),new LeadPoint(frameWidth, frameHeight),new LeadPoint(0, frameHeight),};RasterImageAnimationDisposalMethod[] disposalMethod ={RasterImageAnimationDisposalMethod.RestoreBackground,RasterImageAnimationDisposalMethod.RestoreBackground,RasterImageAnimationDisposalMethod.RestoreBackground,RasterImageAnimationDisposalMethod.RestoreBackground};RasterColor backgroundColor = RasterColor.FromKnownColor(RasterKnownColor.Yellow);RasterImage image = null;Font font = null;StringFormat stringFormat = null;// Create the framesfor (int frame = 0; frame < frameCount; frame++){RasterImage frameImage = new RasterImage(RasterMemoryFlags.Conventional,frameWidth,frameHeight,24,RasterByteOrder.Bgr,RasterViewPerspective.BottomLeft,null,IntPtr.Zero,0){// Set the frame propertiesAnimationDelay = delay[frame],AnimationOffset = offset[frame],AnimationDisposalMethod = disposalMethod[frame],// Background is whiteAnimationBackground = backgroundColor};// Draw the number of the frame on its surfaceIntPtr hdc = RasterImagePainter.CreateLeadDC(frameImage);Graphics g = Graphics.FromHdc(hdc);Rectangle rc = new Rectangle(0, 0, frameWidth, frameHeight);Brush brush = new SolidBrush(RasterColorConverter.ToColor(backColor[frame]));g.FillRectangle(brush, rc);brush.Dispose();if (font == null){int fontHeight = MulDiv(72, GetDeviceCaps(hdc, LOGPIXELSY), 72);font = new Font("Consolas", fontHeight);stringFormat = new StringFormat{Alignment = StringAlignment.Center,LineAlignment = StringAlignment.Center};}string str = string.Format("{0}", frame + 1);brush = new SolidBrush(RasterColorConverter.ToColor(foreColor[frame]));g.DrawString(str, font, brush, rc, stringFormat);brush.Dispose();g.Dispose();RasterImagePainter.DeleteLeadDC(hdc);if (image == null)image = frameImage;elseimage.AddPage(frameImage);}font.Dispose();stringFormat.Dispose();// Setup the global image propertiesimage.AnimationGlobalSize = new LeadSize(frameWidth * 2, frameHeight * 2);image.AnimationGlobalLoop = 0;image.AnimationGlobalBackground = backgroundColor;// Convert this image to 8 bits/pixelColorResolutionCommand cmd = new ColorResolutionCommand(ColorResolutionCommandMode.AllPages,8,RasterByteOrder.Rgb,RasterDitheringMethod.None,ColorResolutionCommandPaletteFlags.Optimized,null);cmd.Run(image);RasterCodecs codecs = new RasterCodecs();// Setup the GIF save optionsRasterColor[] animationPalette = image.GetPalette();codecs.Options.Gif.Save.SetAnimationPalette(animationPalette);codecs.Options.Gif.Save.UseAnimationPalette = true;// The GIF Animation width & height, loop and background are// pulled automatically from the image// Save the filestring fileName = Path.Combine(LEAD_VARS.ImagesDir, "AnimatedGifFile.gif");codecs.Save(image, fileName, RasterImageFormat.Gif, 8, 1, image.PageCount, 1, CodecsSavePageMode.Overwrite);image.Dispose();codecs.Dispose();}static class LEAD_VARS{public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images";}
RasterImage.AnimationWaitUserInput
RasterImage.AnimationBackground
RasterImage.AnimationDisposalMethod
RasterImage.AnimationGlobalLoop
RasterImage.AnimationGlobalSize
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
