←Select platform

AnimationGlobalLoop Property

Summary

Gets or sets a value indicating the global loop count for animated images.

Syntax
C#
VB
Objective-C
C++
Java
public int AnimationGlobalLoop { get; set; } 
Public Property AnimationGlobalLoop As Integer 
@property (nonatomic, assign) NSInteger animationGlobalLoop 
public int getAnimationGlobalLoop() 
public void setAnimationGlobalLoop(int value) 
public: 
property int AnimationGlobalLoop { 
   int get(); 
   void set (    int ); 
} 

Property Value

An integer value that indicates the global loop count for animated images. The following are valid values:

Value Meaning
-1 No looping. This is the default value and it means this image is not animated. This is the case with multipage TIF files, for example.
0 Continuous looping. The animation should repeat itself indefinitely.
< 0 N looping. The animation should repeat itself N times.

Remarks

An image is considered to have animation if the value of AnimationGlobalLoop is not -1 and the image has more than one frame (PageCount is greater than 1).

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.

Example

This example will create an animated GIF file that shows the frame number moving into the four corners

C#
VB
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.ImageProcessing; 
using Leadtools.Drawing; 
using LeadtoolsExamples.Common; 
 
// 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 
      frameImage.AnimationDelay = delay[frame]; 
      frameImage.AnimationOffset = offset[frame]; 
      frameImage.AnimationDisposalMethod = disposalMethod[frame]; 
 
      // Background is white 
      frameImage.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(); 
         stringFormat.Alignment = StringAlignment.Center; 
         stringFormat.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(ImagesPath.Path, "AnimatedGifFile.gif"); 
   codecs.Save(image, fileName, RasterImageFormat.Gif, 8, 1, image.PageCount, 1, CodecsSavePageMode.Overwrite); 
 
   image.Dispose(); 
 
   codecs.Dispose(); 
} 
Imports Leadtools 
Imports Leadtools.Codecs 
Imports Leadtools.ImageProcessing 
Imports Leadtools.Drawing 
 
' WIN32 API 
Const LOGPIXELSY As Integer = 90 
 
<DllImport("gdi32")> 
Shared Function GetDeviceCaps(ByVal hdc As IntPtr, ByVal nIndex As Integer) As Integer 
End Function 
 
<DllImport("kernel32")> 
Shared Function MulDiv(ByVal nNumber As Integer, ByVal nNumerator As Integer, ByVal nDenominator As Integer) As Integer 
End Function 
 
Sub AnimatedGIFExample() 
   ' The GIF file will contain 4 frames 
   Const frameCount As Integer = 4 
 
   ' Each frame is 128 by 128 pixels (the GIF file will have double that size) 
   Const frameWidth As Integer = 128 
   Const frameHeight As Integer = 128 
 
   ' Background colors 
   Dim backColor() As RasterColor = 
   { 
      New RasterColor(&HFF, &H0, &H0), 
      New RasterColor(&H0, &HFF, &H0), 
      New RasterColor(&H0, &H0, &HFF), 
      New RasterColor(&HFF, &HFF, &H0) 
   } 
 
   ' Foreground colors 
   Dim foreColor() As RasterColor = 
   { 
      New RasterColor(&HFF, &HFF, &H0), 
      New RasterColor(&HFF, &H0, &H0), 
      New RasterColor(&H0, &HFF, &H0), 
      New RasterColor(&HFF, &H0, &H0) 
   } 
 
   ' Delay in milliseconds 
   Dim delay() As Integer = 
   { 
      1000, 
      1000, 
      1000, 
      1000 
   } 
 
   ' Left and top, we want the frames to move to each corner 
   Dim offset() As LeadPoint = 
   { 
      New LeadPoint(0, 0), 
      New LeadPoint(frameWidth, 0), 
      New LeadPoint(frameWidth, frameHeight), 
      New LeadPoint(0, frameHeight) 
   } 
 
   Dim disposalMethod() As RasterImageAnimationDisposalMethod = 
   { 
      RasterImageAnimationDisposalMethod.RestoreBackground, 
      RasterImageAnimationDisposalMethod.RestoreBackground, 
      RasterImageAnimationDisposalMethod.RestoreBackground, 
      RasterImageAnimationDisposalMethod.RestoreBackground 
   } 
 
   Dim backgroundColor As RasterColor = RasterColor.FromKnownColor(RasterKnownColor.Yellow) 
 
   Dim image As RasterImage = Nothing 
   Dim myFont As Font = Nothing 
   Dim myStringFormat As StringFormat = Nothing 
 
   ' Create the frames 
   For frame As Integer = 0 To frameCount - 1 
      Dim frameImage As New RasterImage( 
         RasterMemoryFlags.Conventional, 
         frameWidth, 
         frameHeight, 
         24, 
         RasterByteOrder.Bgr, 
         RasterViewPerspective.BottomLeft, 
         Nothing, 
         IntPtr.Zero, 
         0) 
 
      ' Set the frame properties 
      frameImage.AnimationDelay = delay(frame) 
      frameImage.AnimationOffset = offset(frame) 
      frameImage.AnimationDisposalMethod = disposalMethod(frame) 
 
      ' Background is white 
      frameImage.AnimationBackground = backgroundColor 
 
      ' Draw the number of the frame on its surface 
      Dim hdc As IntPtr = RasterImagePainter.CreateLeadDC(frameImage) 
      Dim g As Graphics = Graphics.FromHdc(hdc) 
      Dim rc As New Rectangle(0, 0, frameWidth, frameHeight) 
 
      Dim brush As New SolidBrush(RasterColorConverter.ToColor(backColor(frame))) 
      g.FillRectangle(brush, rc) 
      brush.Dispose() 
 
      If (myFont Is Nothing) Then 
         Dim fontHeight As Integer = MulDiv(72, GetDeviceCaps(hdc, LOGPIXELSY), 72) 
         myFont = New Font("Consolas", fontHeight) 
 
         myStringFormat = New StringFormat() 
         myStringFormat.Alignment = StringAlignment.Center 
         myStringFormat.LineAlignment = StringAlignment.Center 
      End If 
 
      Dim str As String = String.Format("{0}", frame + 1) 
 
      brush = New SolidBrush(RasterColorConverter.ToColor(foreColor(frame))) 
      g.DrawString(str, myFont, brush, rc, myStringFormat) 
      brush.Dispose() 
 
      g.Dispose() 
      RasterImagePainter.DeleteLeadDC(hdc) 
 
      If (image Is Nothing) Then 
         image = frameImage 
      Else 
         image.AddPage(frameImage) 
      End If 
   Next 
 
   myFont.Dispose() 
   myStringFormat.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 
   Dim cmd As New ColorResolutionCommand( 
      ColorResolutionCommandMode.AllPages, 
      8, 
      RasterByteOrder.Rgb, 
      RasterDitheringMethod.None, 
      ColorResolutionCommandPaletteFlags.Optimized, 
      Nothing) 
   cmd.Run(image) 
 
   Dim codecs As New RasterCodecs() 
 
   ' Setup the GIF save options 
   Dim animationPalette() As RasterColor = 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 
   Dim fileName As String = Path.Combine(LEAD_VARS.ImagesDir, "AnimatedGifFile.gif") 
   codecs.Save(image, fileName, RasterImageFormat.Gif, 8, 1, image.PageCount, 1, CodecsSavePageMode.Overwrite) 
 
   image.Dispose() 
 
   codecs.Dispose() 
End Sub 
 
Public NotInheritable Class LEAD_VARS 
   Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images" 
End Class 

Requirements

Target Platforms

Help Version 20.0.2020.4.2
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2020 LEAD Technologies, Inc. All Rights Reserved.

Leadtools Assembly