tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトル画像を大量にカクカクせずに動かす方法
記事No7651
投稿日: 2008/06/02(Mon) 03:50
投稿者SEE
【使用OS】Windows XP
【使用環境】VB.NET 2005 or 2008

はじめまして。SEEと申します。
現在シューティングゲームを作っているのですが、
練習で画像(picturebox)を大量に動かすとカクカクした動きになってしまいます。
処理が間に合わないのかな?と
CPU使用率を見てみたら、20%〜25%程度だったので、謎に思っております。

画像を動かしているコードは


'使う画像
Dim picture(199) As Windows.Forms.PictureBox

'画像のX位置
dim picx(199) as integer

'画像のY位置
dim picy(199) as integer


'読み込み
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

 '代入(?)
 picture(0) = PictureBox1
 picture(1) = PictureBox2
 〜略〜
 picture(198) = picturebox199
 picture(199) = picturebox200

End Sub


'画像を動かす
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

 '画像の位置を変える
 For i = 0 To picture.Length - 1
  picx(i) = picx(i) + 1
  picy(i) = picy(i) + 1
  picture(i).Location = New Point(picx(i), picy(i))
 Next

End Sub


という感じで動かしています。(テスト用の為、画像の位置をわざと重ねてあります)
何か効率よくプログラムを動かす方法は無いでしょうか?
出来れば、VBでお願いします。
(インターネットで調べたところ、C言語関係のコードしか見つからない・・・)

[ツリー表示へ]
タイトルRe: 画像を大量にカクカクせずに動かす方法
記事No7652
投稿日: 2008/06/02(Mon) 07:35
投稿者花ちゃん
OS の処理速度やメモリ容量等にも影響されるでしょうし、画像のサイズや
表示サイズにもよりますし、現状の PictureBox を 200 から どの位少なく
すれば、貴方の望む表示状態になりますか?
又、肝心のTimer1 のインターバル等も明記されていないし、画像の表示位置を移動
されているのではなく、PictureBox の表示位置を移動されているようですが?
(同時にすべてのPictureBox を同じ方向に同じ量だけ移動させる必要があるのかな)

[ツリー表示へ]
タイトルRe^2: 画像を大量にカクカクせずに動かす方法
記事No7665
投稿日: 2008/06/02(Mon) 21:18
投稿者SEE
> OS の処理速度やメモリ容量等にも影響されるでしょうし、画像のサイズや
> 表示サイズにもよりますし、現状の PictureBox を 200 から どの位少なく
> すれば、貴方の望む表示状態になりますか?

pictureboxの数は50個前後ぐらいに安定して動きました。
画像のサイズは縦横共に10です。
他の高性能のPCでもやってみたら、意外に大した変化はありません。


> 又、肝心のTimer1 のインターバル等も明記されていないし、画像の表示位置を移動
> されているのではなく、PictureBox の表示位置を移動されているようですが?

すみません。インターバルの明記を忘れていました。
intervalの値は33にしてあります。(一秒間に30フレーム動かす為)

pictureboxを動かさないと画像は動かないのでは?
そこの指摘はよく分かりません。


> (同時にすべてのPictureBox を同じ方向に同じ量だけ移動させる必要があるのかな)

これもテストの為です。実際動かす場合は必要な部分だけ移動させます。
動かす方向もテストが終わったら変えるつもりです。
説明不足でした。

[ツリー表示へ]