配列とアニメーション
配列を使うと、たとえば以下のようなアニメーションを作ることができる
| Public Class Form1
    Dim x(9), y(9)   ' 10個の正方形の位置
    Dim vx(9), vy(9) ' 10個の正方形の1 tick あたりの移動量
    Private Sub Form1_Paint(ByVal sender As Object, _
        ByVal e As System.Windows.Forms.PaintEventArgs)
        Dim g As Graphics
        g = e.Graphics
        Dim pen1 As System.Drawing.Pen
        For i = 0 To 9
            pen1 = New System.Drawing.Pen( _
                Color.FromArgb(&HFF0000FF + _
                i * 65536 * 20 - i * 20))
            g.DrawRectangle(pen1, x(i), y(i), 20, 20)
        Next
    End Sub 'p1_Paint_sub
    Private Sub Form1_Load( _
        ByVal sender As System.Object, _
        ByVal e As System.EventArgs _
      ) Handles MyBase.Load
        ' Picturebox p1を準備する
        Dim p1 As PictureBox
        p1 = New PictureBox
        p1.Dock = DockStyle.Fill
        p1.BackColor = Color.White
        AddHandler p1.Paint, AddressOf Form1_Paint
        Me.Controls.Add(p1)
        ' Timer t1を準備する
        Dim Timer1 As Timer
        Timer1 = New Timer
        Timer1.Interval = 10
        Timer1.Enabled = True
        AddHandler Timer1.Tick, AddressOf Me.Timer1_Tick
        ' 10個の正方形の位置と速度を乱数で初期化する
        For i = 0 To 9
            x(i) = Rnd(1) * 200
            y(i) = Rnd(1) * 200
            vx(i) = Rnd(1) * 5
            vy(i) = Rnd(1) * 5
        Next
    End Sub
    Private Sub Timer1_Tick( _
        ByVal sender As System.Object, _
        ByVal e As System.EventArgs _
      )
        For i = 0 To 9
            ' 正方形の位置に移動量を加え
            ' 1 tick 後の位置を計算する
            x(i) = x(i) + vx(i)
            y(i) = y(i) + vy(i)
            ' もし200ドットを超えたら元に戻す
            If (x(i) > 200) Then
                x(i) = 0
            End If
            If (y(i) > 200) Then
                y(i) = 0
            End If
        Next
        Me.Refresh()
    End Sub
End Class | 
プログラムの各部を説明する。ただし、すでに作成したプログラムと同じ部分は灰色で示し、アニメーションを変更するために、新たに書き加えた部分は詳しく説明する。
通常のアニメーションのプログラムの説明は、->こちら
| 
        
Public Class Form1
 | 元のまま | 
|     Dim x(9), y(9)   ' 10個の正方形の位置
    Dim vx(9), vy(9) ' 1 tick あたりの移動量
 | x, yを10個の正方形の位置と速度を保持する変数として宣言する。 | 
|     Private Sub Form1_Paint( _
          ByVal sender As Object, _
          ByVal e As System.Windows. _
          Forms.PaintEventArgs)
        Dim g As Graphics
        g = e.Graphics
        Dim pen1 As System.Drawing.Pen
 | 元のまま | 
|         For i = 0 To 9
            pen1 = New System.Drawing.Pen( _
                Color.FromArgb(&HFF0000FF + _
                i * 65536 * 20 - i * 20))
            g.DrawRectangle(pen1, _
                x(i), y(i), 20, 20)
        Next | 各正方形の色を変化させる。また配列で指定された座標に描画する。 | 
|     End Sub 'p1_Paint_sub
    Private Sub Form1_Load( _
        ByVal sender As System.Object, _
        ByVal e As System.EventArgs _
      ) Handles MyBase.Load
        ' Picturebox p1を準備する
        Dim p1 As PictureBox
        p1 = New PictureBox
        p1.Dock = DockStyle.Fill
        p1.BackColor = Color.White
        AddHandler p1.Paint, _
          AddressOf Form1_Paint
        Me.Controls.Add(p1)
        ' Timer t1を準備する
        Dim Timer1 As Timer
        Timer1 = New Timer
        Timer1.Interval = 10
        Timer1.Enabled = True
        AddHandler Timer1.Tick, _
          AddressOf Me.Timer1_Tick | 元のまま | 
| 
        ' 10個の正方形の位置と速度を
        '乱数で初期化する
        For i = 0 To 9
            x(i) = Rnd(1) * 200
            y(i) = Rnd(1) * 200
            vx(i) = Rnd(1) * 5
            vy(i) = Rnd(1) * 5
        Next | 正方形を、設定されたスピードで移動する | 
|     End Sub
    Private Sub Timer1_Tick( _
        ByVal sender As System.Object, _
        ByVal e As System.EventArgs _
      ) | 元のまま | 
|         For i = 0 To 9
            ' 正方形の位置に移動量を加え
            ' 1 tick 後の位置を計算する
            x(i) = x(i) + vx(i)
            y(i) = y(i) + vy(i)
            ' もし200ドットを超えたら元に戻す
            If (x(i) > 200) Then
                x(i) = 0
            End If
            If (y(i) > 200) Then
                y(i) = 0
            End If
        Next | 10個の正方形の座標が200をこえたら、座標値を0にする。 | 
| 
        Me.Refresh()
    End Sub
End Class
         | 元のまま | 
そして配列は以下のように、10個の正方形の位置と移動速度を記録するために使っている。
| 正方形0 | x(0) | x座標 | vx(0) | x方向速度 | 
| y(0) | y座標 | vy(0) | y方向速度 | 
| 正方形1 | x(1) | x座標 | vx(1) | x方向速度 | 
| y(1) | y座標 | vy(1) | y方向速度 | 
| 正方形2 | x(2) | x座標 | vx(2) | x方向速度 | 
| y(2) | y座標 | vy(2) | y方向速度 |