ImageAnimatorクラス

タイムベース (time based) のフレームが含まれる画像を、動画化できます。

メソッド

すべて静的メソッドです。

メソッド 機能
Animate(Image, EventHandler) アニメーションを開始できる
StopAnimate(Image, EventHandler) アニメーションを終了できる
UpdateFrames() 実行中のすべてのイメージの、フレームを進められる
UpdateFrames(Image) 指定のイメージの、フレームを進められる
CanAnimate(Image) 指定のイメージにタイムベース フレームが含まれているか調べられる
class MyForm : Form
{
    Bitmap image = new Bitmap("sample.gif");
    Rectangle rc;

    protected override async void OnShown(EventArgs e)
    {
        base.OnShown(e);

        this.rc = new Rectangle(new Point(0, 0), this.image.Size);

        EventHandler onFrameChangedHandler = delegate // フレームが変更された
        {
            this.Invalidate(this.rc);
        };

        // アニメーションを開始する
        ImageAnimator.Animate(this.image, onFrameChangedHandler);

        await Task.Delay(3000);

        // アニメーションを終了する
        ImageAnimator.StopAnimate(this.image, onFrameChangedHandler);
    }

    protected override void OnPaint(PaintEventArgs e)
    {
        base.OnPaint(e);

        if (e.ClipRectangle.IntersectsWith(this.rc))
        {
            // 次のフレームへ進める
            ImageAnimator.UpdateFrames(this.image);

            // 新しいフレームを描画する
            e.Graphics.DrawImage(this.image, this.rc);
        }
    }
}
例 - ImageAnimator.Animate(Image, EventHandler) メソッド (System.Drawing) | Microsoft Learn

Animate()

複数のフレームからなる画像を、アニメーションとして表示できます。

public static void Animate (
    System.Drawing.Image image,
    EventHandler onFrameChangedHandler // アニメーションのフレームが変更されたときに呼び出されるメソッド
    );
ImageAnimator.Animate(Image, EventHandler) メソッド (System.Drawing) | Microsoft Learn

Animate()でアニメーションを開始すると、StopAnimate()を呼ぶまでくり返しonFrameChangedHandlerが呼ばれます。

imageがすでにアニメーションを開始しているならば、それが終了させられた上で新たに開始されます。Animate - ImageAnimator.cs

StopAnimate()

アニメーションを終了させられます。

public static void StopAnimate (
    System.Drawing.Image image,
    EventHandler onFrameChangedHandler
    );
ImageAnimator.StopAnimate(Image, EventHandler) メソッド (System.Drawing) | Microsoft Learn

onFrameChangedHandlerには、Animate()で開始するときに渡したハンドラを指定します。

imageがアニメーションを開始していないならば、何も終了しません。StopAnimate - ImageAnimator.cs

UpdateFrames()

指定のイメージのフレームを進められます。このメソッドではイメージ内のフレームの情報を変更するだけで、表示が変更されるのは次に描画されたときです。

public static void UpdateFrames (System.Drawing.Image image);
UpdateFrames(Image) - ImageAnimator.UpdateFrames メソッド (System.Drawing) | Microsoft Learn

このメソッドをくり返し呼び出した場合、フレームが進められる前だったならば、次のフレームへは進められません。UpdateFrames - ImageAnimator.cs

Microsoft Learnから検索