Thread Animation

Thread でアニメーションします。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プロジェクトの作成

  1. Thread でアニメーションするために、Form2 Class を追加します。
    Form の追加は Form-2 を参照して作成して下さい。
    Form2 は Form1 と同様に画像を描画するためのウインドウを持ちます。
    ここに画像を切り分けて Thread でアニメーションします。
    Thread で起動出来るのは void 型でパラメータ無しのメソッドです。
    Run() メソッドでは Sleep(200) 毎に Sprite を切り替えてアニメーションします。
    このとき直接 Form2 に描画出来れば良いのですが、禁止されているようです。
    そこで Run() メソッドから Invalidate() を発行して MyHandler で再描画します。
  2. 自動生成を使って Form を作成 でプロジェクトを作成して下さい。
    スレッドを使うときは using で Threading を追加します。
    using System.Threading;
    
  3. Form1 に2個のボタンを貼り付けます。
  4. Form-2 を参照して Form2 を作成して下さい。
    Form2.cs に Card Class を定義して下さい。
    Card Class は 美人のアニメーション を参照して下さい。
  5. Form2 の Constructor で Card Class を生成して画像を入力します。
        Card App;
        int SP_NO = 0;
    
        public Form2()
        {
            InitializeComponent();
            App = new Card(@"c:\data\test\bijin16.jpg", 60, 60);
        }
    
  6. スレッドで起動する Run() クラスです。
    Run() メソッドでは Sleep(200) 毎に Invalidate() で再描画します。
        public void Run()
        {
            while (true)
            {
                System.Threading.Thread.Sleep(200);
                SP_NO = (SP_NO + 1) % 16;
                Invalidate();
            }
        }
    
  7. Form2 の Paint に MyHandler を設定します。
    MyHandler で Sprite を切り替えてアニメーションします。
        private void MyHandler(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            if (App.bmp != null)    App.View(g, SP_NO, 20, 20);
        }
    
  8. Start_Ainime ボタンをクリックする毎に、新しいウインドウが生成されてアニメーションが開始されます。
    Sleep ボタンをクリックすると現在起動中の全てのアニメーションが5秒間停止します。
    スレッド起動の Run() メソッドは動いているのですが、Form2 の本体が Sleep するのでアニメーションも停止します。
    アニメーションはバックグラウンド・スレッドとして起動するので、親が停止すると実行中の全てのアニメーションも停止します。

[Previous Chapter ↑] アニメーション&Thread

超初心者のプログラム入門(C# Frame Work)