まず四角形を描画する.Private Sub Form_Load()
Picture1.ScaleMode = 3
End SubPrivate Sub Command1_Click()
Picture1.Line (20, 20)-Step(40, 40), &HFF0000, BF
End Subさらに四角形を移動して描画することを考える.
Private Sub Command1_Click()
Dim n As Integer
For n = 1 to 300
Picture1.Line (n, 20)-Step(40,40), &HFF,BF
Next
End Sub複数の四角形が重なりあって描画されることにより,結果として長方形が描かれる.
ここで描画と画像のクリアとを交互に行うように指定してみる.
Private Sub Command1_Click()
Dim n As Integer
For n = 1 to 300
Picture1.Cls
Picture1.Line (n, 20)-Step(40,40), &HFF,BF
Next
End Sub
これで画面左から右へ四角形が駆け抜けていくはず..
しかし,これでは速すぎてアニメーションとして機能しないことから,
タイマーコントロールを使ってアニメーション速度を制御する.
タイマーコントロールは,設定した時間に応じてイベントを発生させる.
(Timer1_Timerイベント)
Timer1.Enabled TrueあるいはFalseを設定する.(初期はFalseになっている)
Timer1.Interval イベントの発生する単位をミリ秒で設定(ただしその精度は1/18秒程度)
とりあえず,コントロールウィンドウからタイマーコントロールを持ってきて,
Picture1上に貼り付ける.Dim n As Integer 'nを広域宣言しておく.
Private Sub Command1_Click()
Timer1.Interval = 100
Timer1.Enabled = True
End SubPrivate Sub Timer1_Timer()
Picture1.Cls '画像のクリア
Picture1.Line(n,20)-Step(40,40),&HFF,BF
n = n + 1 'nに1を足しておく(呼び出される毎に1増える)
End Sub
1)アニメーションの速度
n=n+1を n=n+5 というようにnに足す値を増やす,あるいはTimer1.Intervalの値を変えてやれば,
アニメーションの速度を変えることが可能である.
2)画像のちらつき
画像のちらつきは,描画とクリアとを繰り返すことにより,生じるものである.
そこで,コンピュータ上に表裏の2枚の画像メモリを準備しておき,裏の画面で描画作業を行ない,描画が終ったら,表裏の画像を入れ替えるという方法が用いられる.これをダブルバッファリング(double buffering)という.
これと同様の機能を再現するためには,VBでは以下の設定を行なうだけでよい.Piture1.AutoRedraw = True 'Picture1を設定する場合
ただし,これにより描画速度は低下する.