Leadtools Send comments on this topic. | Back to Introduction - All Topics | Help Version 16.5.9.25
ClearUpdateRectangle Method
See Also  Example
Leadtools Namespace > RasterImageAnimator Class : ClearUpdateRectangle Method



Clears the update rectangle used for an animation playback, leaving an empty rectangle.

Syntax

Visual Basic (Declaration)  
Public Sub ClearUpdateRectangle() 
Visual Basic (Usage) Copy Code
Dim instance As RasterImageAnimator
 
instance.ClearUpdateRectangle()
C#  
public void ClearUpdateRectangle()
C++/CLI  
public:
void ClearUpdateRectangle(); 

Example

This example uses ClearUpdateRectangle to avoid painting odd numbered frames

Visual Basic Copy Code
Sub RasterImageAnimatorClearUpdateRectangleExample(ByVal panel As Panel)
   ' Initialize the RasterCodecs object
   RasterCodecs.Startup()
   Dim codecs As New RasterCodecs()
   ' Load the animated GIF file
   Dim fileName As String = LeadtoolsExamples.Common.ImagesPath.Path + "Eye.gif"
   Dim animatedImage As RasterImage = codecs.Load(fileName)

   ' Create the target image, we want it to be in the animated image size
   Dim targetImage As New RasterImage( _
      RasterMemoryFlags.Conventional, _
      animatedImage.AnimationGlobalSize.Width, _
      animatedImage.AnimationGlobalSize.Height, _
      animatedImage.BitsPerPixel, _
      animatedImage.Order, _
      animatedImage.ViewPerspective, _
      Nothing, _
      IntPtr.Zero, _
      0)

   ' Copy the palette from the animated image to this newly created image
   animatedImage.CopyPaletteTo(targetImage)

   ' Create the RasterImageAnimator object
   Dim animator As New RasterImageAnimator(targetImage, animatedImage)

   ' Animate it

   ' Use GDI+ paint engine to support transparent colors
   Dim props As RasterPaintProperties = RasterPaintProperties.Default
   props.PaintEngine = RasterPaintEngine.GdiPlus

   Dim g As Graphics = panel.CreateGraphics()

   Dim state As RasterImageAnimatorState

   Do
      Dim srcRect As New Rectangle(0, 0, targetImage.ImageWidth, targetImage.ImageHeight)
      Dim updateRect As Rectangle
      Dim destRect As Rectangle
      Dim index As Integer

      state = animator.Process()

      Select Case (state)
         Case RasterImageAnimatorState.WaitDelay, _
            RasterImageAnimatorState.WaitInputDelay, _
            RasterImageAnimatorState.Render
            ' Continue processing

         Case RasterImageAnimatorState.WaitInput
            ' In case the animated image has the "wait for user input" flags,
            ' cancel the waiting
            animator.CancelWait()

         Case RasterImageAnimatorState.PostRender
            index = animator.Index
            If ((index Mod 2) <> 0) Then
               animator.ClearUpdateRectangle()
            End If

            ' Get the area in the target image that has changed
            updateRect = animator.GetUpdateRectangle(True)

            ' Paint it
            destRect = New Rectangle(0, 0, targetImage.ImageWidth, targetImage.ImageHeight)

            targetImage.Paint(g, srcRect, updateRect, destRect, destRect, props)
      End Select
   Loop While (state <> RasterImageAnimatorState.End)

   g.Dispose()

   animator.Dispose()

   targetImage.Dispose()
   animatedImage.Dispose()

   codecs.Dispose()
   RasterCodecs.Shutdown()
End Sub
C# Copy Code
void RasterImageAnimatorClearUpdateRectangleExample(Panel panel) 

   // Initialize the RasterCodecs object 
   RasterCodecs.Startup(); 
   RasterCodecs codecs = new RasterCodecs(); 
 
   // Load the animated GIF file 
   string fileName = LeadtoolsExamples.Common.ImagesPath.Path + "Eye.gif"; 
   RasterImage animatedImage = codecs.Load(fileName); 
 
   // 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 
   { 
      Rectangle srcRect = new Rectangle(0, 0, targetImage.ImageWidth, targetImage.ImageHeight); 
      Rectangle updateRect; 
      Rectangle destRect; 
      int index; 
 
      state = animator.Process(); 
 
      switch(state) 
      { 
         case RasterImageAnimatorState.WaitDelay: 
         case RasterImageAnimatorState.WaitInputDelay: 
         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 Rectangle(0, 0, targetImage.ImageWidth, targetImage.ImageHeight); 
 
            targetImage.Paint(g, srcRect, updateRect, destRect, destRect, props); 
            break; 
 
         default: 
            break; 
      } 
   } 
   while(state != RasterImageAnimatorState.End); 
 
   g.Dispose(); 
 
   animator.Dispose(); 
 
   targetImage.Dispose(); 
   animatedImage.Dispose(); 
 
   codecs.Dispose(); 
   RasterCodecs.Shutdown(); 
}

Requirements

Target Platforms: Microsoft .NET Framework 3.0, Windows XP, Windows Server 2003 family, Windows Server 2008 family

See Also