ImageAnimator.Animate(Image, EventHandler) 方法

定义

将多帧图像显示为动画。

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)

参数

image
Image

Image 进行动画处理的对象。

onFrameChangedHandler
EventHandler

一个 EventHandler 对象,指定动画帧更改时调用的方法。

示例

此Windows 窗体应用程序演示如何将动画图像绘制到屏幕。 该图像是从动画 GIF 文件创建的,SampleAnimation.gif 位于应用程序所在的同一文件夹中。

#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

注解

注释

在 .NET 6 及更高版本中,包含此类型的 System.Drawing.Common 包 仅支持在 Windows 操作系统上运行。 在跨平台应用中使用此类型会导致编译时警告和运行时异常。 有关详细信息,请参阅 仅在 Windows 上支持的 System.Drawing.Common。

适用于