public static readonly int MaxRegionFrameIndex 
The maximum region frame index.
using Leadtools;using Leadtools.Codecs;using Leadtools.Drawing;using Leadtools.ImageProcessing;public void FrameRegionExample(){FrameRegionForm f = new FrameRegionForm();f.ShowDialog();}class FrameRegionForm : Form{private int frameIndex;private RasterImage image;private System.Windows.Forms.Timer timer;private bool fillRegion;public FrameRegionForm(){// Load the imageusing (RasterCodecs codecs = new RasterCodecs()){string srcFileName = Path.Combine(LEAD_VARS.ImagesDir, "Image1.cmp");image = codecs.Load(srcFileName);}// Add a region to the imageLeadRect rc = new LeadRect(image.Width / 3, image.Height / 3, image.Width / 3, image.Height / 3);RasterRegionXForm xform = new RasterRegionXForm();xform.ViewPerspective = RasterViewPerspective.TopLeft;image.AddEllipseToRegion(xform, rc, RasterRegionCombineMode.Set);// initialize the frame indexframeIndex = 0;fillRegion = true;Text = "Double click to enable/disable filling the region";// Create the timertimer = new System.Windows.Forms.Timer();timer.Interval = 100;timer.Tick += new EventHandler(timer_Tick);timer.Start();}protected override void Dispose(bool disposing){// Clean upif (disposing){if (timer != null){timer.Dispose();}if (image != null){image.Dispose();}}base.Dispose(disposing);}protected override void OnDoubleClick(EventArgs e){fillRegion = !fillRegion;Invalidate();base.OnDoubleClick(e);}private RasterRegionXForm GetXForm(LeadRect destRect){// Calculate xform when the image is painted into 'destRect'RasterRegionXForm xform = new RasterRegionXForm();xform.ViewPerspective = RasterViewPerspective.TopLeft;xform.XOffset = destRect.Left;xform.YOffset = destRect.Top;xform.XScalarDenominator = image.Width;xform.XScalarNumerator = destRect.Width;xform.YScalarDenominator = image.Height;xform.YScalarNumerator = destRect.Height;return xform;}protected override void OnPaint(PaintEventArgs e){// Draw the image fit and center on this formLeadRect destRect = LeadRect.FromLTRB(ClientRectangle.Left, ClientRectangle.Top, ClientRectangle.Right, ClientRectangle.Bottom);destRect = RasterImage.CalculatePaintModeRectangle(image.ImageWidth,image.ImageHeight,destRect,RasterPaintSizeMode.Fit,RasterPaintAlignMode.Center,RasterPaintAlignMode.Center);LeadRect clipRect = LeadRect.FromLTRB(e.ClipRectangle.Left, e.ClipRectangle.Top, e.ClipRectangle.Right, e.ClipRectangle.Bottom);RasterImagePainter.Paint(image, e.Graphics, LeadRect.Empty, LeadRect.Empty, destRect, clipRect, RasterPaintProperties.Default);if (fillRegion){RasterRegionXForm xform = GetXForm(destRect);RasterImagePainter.FillRegion(image, e.Graphics, xform, new RasterColor(255, 0, 255));}base.OnPaint(e);}private void timer_Tick(object sender, EventArgs e){// Frame the image regionLeadRect destRect = LeadRect.FromLTRB(ClientRectangle.Left, ClientRectangle.Top, ClientRectangle.Right, ClientRectangle.Bottom);destRect = RasterImage.CalculatePaintModeRectangle(image.ImageWidth,image.ImageHeight,destRect,RasterPaintSizeMode.Fit,RasterPaintAlignMode.Center,RasterPaintAlignMode.Center);RasterRegionXForm xform = GetXForm(destRect);using (Graphics g = CreateGraphics()){RasterImagePainter.FrameRegion(image, g, xform, frameIndex);}// advance to next frameframeIndex++;if (frameIndex > RasterImagePainter.MaxRegionFrameIndex){frameIndex = 0;}}}static class LEAD_VARS{public const string ImagesDir = @"C:\LEADTOOLS22\Resources\Images";}
When painting an image region using FrameRegion(RasterImage,Graphics,RasterRegionXForm,Int32), you can animate the region frame by cycling through the region frames for 0 to MaxRegionFrameIndex.
For more information refer to RasterImage and GDI/GDI+.