ImageAnimator.Animate(Image, EventHandler) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Muestra una imagen con varios marcos como una animación.
public:
static void Animate(System::Drawing::Image ^ image, EventHandler ^ onFrameChangedHandler);
public static void Animate (System.Drawing.Image image, EventHandler onFrameChangedHandler);
static member Animate : System.Drawing.Image * EventHandler -> unit
Public Shared Sub Animate (image As Image, onFrameChangedHandler As EventHandler)
Parámetros
- onFrameChangedHandler
- EventHandler
Objeto EventHandler
que especifica el método al que se llama cuando cambia el marco de la animación.
Ejemplos
En esta Windows Forms aplicación se muestra cómo dibujar una imagen animada en la pantalla. La imagen se crea a partir del archivo GIF animado SampleAnimation.gif ubicado en la misma carpeta que la aplicación.
#using <System.dll>
#using <System.Drawing.dll>
#using <System.Windows.Forms.dll>
using namespace System;
using namespace System::Drawing;
using namespace System::Windows::Forms;
public ref class AnimateImageForm : public Form
{
// Create a Bitmap Object.
private:
Bitmap^ animatedImage;
private:
bool currentlyAnimating;
public:
AnimateImageForm()
{
try
{
animatedImage = gcnew Bitmap("SampleAnimation.gif");
}
catch (ArgumentException^)
{
MessageBox::Show("Could not read the image file " +
"\"SampleAnimation.gif\",\n" +
"or it is not a valid image file.");
}
}
// This method begins the animation.
public:
void AnimateImage()
{
// Begin the animation only once.
// Make sure to animate only if animatedImage was
// successfully initialised.
if (!currentlyAnimating && animatedImage != nullptr)
{
ImageAnimator::Animate(animatedImage,
gcnew EventHandler(this, &AnimateImageForm::OnFrameChanged));
currentlyAnimating = true;
}
}
private:
void OnFrameChanged(Object^ , EventArgs^ )
{
// Force a call to the Paint event handler.
this->Invalidate();
}
protected:
virtual void OnPaint(PaintEventArgs^ e) override
{
// Begin the animation.
AnimateImage();
// Get the next frame ready for rendering.
ImageAnimator::UpdateFrames();
if (animatedImage != nullptr)
{
// Draw the next frame in the animation.
e->Graphics->DrawImage(this->animatedImage,
Point(0, 0));
}
}
};
[STAThread]
int main()
{
Application::Run(gcnew AnimateImageForm());
}
using System;
using System.Drawing;
using System.Windows.Forms;
public class animateImage : Form
{
//Create a Bitmpap Object.
Bitmap animatedImage = new Bitmap("SampleAnimation.gif");
bool currentlyAnimating = false;
//This method begins the animation.
public void AnimateImage()
{
if (!currentlyAnimating)
{
//Begin the animation only once.
ImageAnimator.Animate(animatedImage, new EventHandler(this.OnFrameChanged));
currentlyAnimating = true;
}
}
private void OnFrameChanged(object o, EventArgs e)
{
//Force a call to the Paint event handler.
this.Invalidate();
}
protected override void OnPaint(PaintEventArgs e)
{
//Begin the animation.
AnimateImage();
//Get the next frame ready for rendering.
ImageAnimator.UpdateFrames();
//Draw the next frame in the animation.
e.Graphics.DrawImage(this.animatedImage, new Point(0, 0));
}
public static void Main()
{
Application.Run(new animateImage());
}
}
Imports System.Drawing
Imports System.Windows.Forms
Public Class animateImage
Inherits Form
'Create a Bitmpap Object.
Private animatedImage As New Bitmap("SampleAnimation.gif")
Private currentlyAnimating As Boolean = False
'This method begins the animation.
Public Sub AnimateImage()
If Not currentlyAnimating Then
'Begin the animation only once.
ImageAnimator.Animate(animatedImage, _
New EventHandler(AddressOf Me.OnFrameChanged))
currentlyAnimating = True
End If
End Sub
Private Sub OnFrameChanged(ByVal o As Object, ByVal e As EventArgs)
'Force a call to the Paint event handler.
Me.Invalidate()
End Sub
Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
'Begin the animation.
AnimateImage()
'Get the next frame ready for rendering.
ImageAnimator.UpdateFrames()
'Draw the next frame in the animation.
e.Graphics.DrawImage(Me.animatedImage, New Point(0, 0))
End Sub
Public Shared Sub Main()
Application.Run(New AnimateImage)
End Sub
End Class
Comentarios
Nota
En .NET 6 y versiones posteriores, el paquete System.Drawing.Common, que incluye este tipo, solo se admite en sistemas operativos Windows. El uso de este tipo en aplicaciones multiplataforma provoca advertencias en tiempo de compilación y excepciones en tiempo de ejecución. Para obtener más información, consulte System.Drawing.Common only supported on Windows(System.Drawing.Common only supported on Windows).