タイムベース (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
複数のフレームからなる画像を、アニメーションとして表示できます。
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
アニメーションを終了させられます。
public static void StopAnimate (
System.Drawing.Image image,
EventHandler onFrameChangedHandler
);
ImageAnimator.StopAnimate(Image, EventHandler) メソッド (System.Drawing) | Microsoft Learn
onFrameChangedHandlerには、Animate()で開始するときに渡したハンドラを指定します。
imageがアニメーションを開始していないならば、何も終了しません。StopAnimate - ImageAnimator.cs
指定のイメージのフレームを進められます。このメソッドではイメージ内のフレームの情報を変更するだけで、表示が変更されるのは次に描画されたときです。
public static void UpdateFrames (System.Drawing.Image image);UpdateFrames(Image) - ImageAnimator.UpdateFrames メソッド (System.Drawing) | Microsoft Learn
このメソッドをくり返し呼び出した場合、フレームが進められる前だったならば、次のフレームへは進められません。UpdateFrames - ImageAnimator.cs