public RasterImageAnimationDisposalMethod AnimationDisposalMethod { get; set; }
@property (nonatomic, assign) LTRasterImageAnimationDisposalMethod animationDisposalMethod
public RasterImageAnimationDisposalMethod getAnimationDisposalMethod();
public:
property RasterImageAnimationDisposalMethod AnimationDisposalMethod {
RasterImageAnimationDisposalMethod get();
void set ( RasterImageAnimationDisposalMethod );
}
AnimationDisposalMethod # get and set (RasterImage)
A RasterImageAnimationDisposalMethod enumeration member that indicate the animation disposal method for the current frame.
When the value of this property is changed, the Changed event will fire with RasterImageChangedFlags set to RasterImageChangedFlags.AnimationProperties.
For more information, refer to Implementing Animation.
using Leadtools;
using Leadtools.Codecs;
using Leadtools.ImageProcessing;
using Leadtools.Drawing;
// WIN32 API
const 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 frames
const 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 colors
RasterColor[] backColor =
{
new RasterColor(0xFF, 0x00, 0x00),
new RasterColor(0x00, 0xFF, 0x00),
new RasterColor(0x00, 0x00, 0xFF),
new RasterColor(0xFF, 0xFF, 0x00)
};
// Foreground colors
RasterColor[] foreColor =
{
new RasterColor(0xFF, 0xFF, 0x00),
new RasterColor(0xFF, 0x00, 0x00),
new RasterColor(0x00, 0xFF, 0x00),
new RasterColor(0xFF, 0x00, 0x00)
};
// Delay in milliseconds
int[] delay =
{
1000,
1000,
1000,
1000
};
// Left and top, we want the frames to move to each corner
LeadPoint[] 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 frames
for (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 properties
AnimationDelay = delay[frame],
AnimationOffset = offset[frame],
AnimationDisposalMethod = disposalMethod[frame],
// Background is white
AnimationBackground = backgroundColor
};
// Draw the number of the frame on its surface
IntPtr 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;
else
image.AddPage(frameImage);
}
font.Dispose();
stringFormat.Dispose();
// Setup the global image properties
image.AnimationGlobalSize = new LeadSize(frameWidth * 2, frameHeight * 2);
image.AnimationGlobalLoop = 0;
image.AnimationGlobalBackground = backgroundColor;
// Convert this image to 8 bits/pixel
ColorResolutionCommand cmd = new ColorResolutionCommand(
ColorResolutionCommandMode.AllPages,
8,
RasterByteOrder.Rgb,
RasterDitheringMethod.None,
ColorResolutionCommandPaletteFlags.Optimized,
null);
cmd.Run(image);
RasterCodecs codecs = new RasterCodecs();
// Setup the GIF save options
RasterColor[] 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 file
string 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";
}
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