PictureBoxのダブルバッファリングについて
長文、失礼致します。
私は現在、趣味でRPGを作っているプログラム初心者です。
開発環境はVB2005 ExpressEditionです。
ゲーム中の描画処理は全て1つのPictureBoxで行っています。
PictureBoxのサイズは544×416ピクセルで、描画する画像はGIFやJPEGです。
そして、描画速度がちょっと遅いのが気になっています…。
(縦64、横58ピクセルのキャラが、2cmくらい移動するのに1秒くらい掛かります)
どうにか描画速度を速くできないか調べたところ、
ダブルバッファリングという手法を見つけました。
それについて調べたところ、VB2005ではデフォルトでダブルバッファが有効になっているらしい事が分りました。
しかし、以下のように確認したところ「False」と表示され、ダブルバッファが有効になっていないようでした。
Me.Text = Me.GetStyle(ControlStyles.OptimizedDoubleBuffer)
また、フォームのロード時に以下のように記述しても、描画速度に変化は見られませんでした。
Me.SetStyle(ControlStyles.OptimizedDoubleBuffer, True)
Me.SetStyle(ControlStyles.UserPaint, True)
Me.SetStyle(ControlStyles.AllPaintingInWmPaint, True)
ここで質問なのですが、既にダブルバッファリングされてこの程度の描画速度なら、もっと高速にするには、やはりWin32APIやDirectX等を使うしか方法が無いでしょうか…?
あと、現在使っているPCの仕様です。
OS : Windows Vista Home Basic
CPU : Celeron(1.73GHz)
メモリ : 1GB
何だか色々と叩かれそうな予感がしますが、
ご回答のほど、宜しくお願い致します。
補足
失礼しました。また、ありがとうございます。 下記ソースを抜き出しましたのでよろしくお願い致します。 リードツールというサードパーティ製のソフトを使用しています。 Imports Leadtools.Codecs Imports Leadtools.Windows.Controls '表示処理↓↓↓↓↓↓↓↓↓↓↓↓↓↓ Private Sub BtnShow_Click(sender As Object, e As RoutedEventArgs) Handles BtnShow.Click imageList1.LoadTiff(New Uri("C:\TMP\img01.jpg", UriKind.Absolute)) imageList1.Items.Refresh() End Sub '表示処理↑↑↑↑↑↑↑↑↑↑↑↑↑↑ '保存処理↓↓↓↓↓↓↓↓↓↓↓↓↓↓ Private Sub BtnHozon_Click(sender As Object, e As RoutedEventArgs) Handles BtnHozon.Click Dim Codecs = New RasterCodecs Codecs.Save(ViewRpt.Image, "C:\TMP\img01.jpg", Leadtools.RasterImageFormat.Png, 24) MessageBox.Show("保存しました") If Not Codecs Is Nothing Then Codecs.Dispose() End If End Sub '保存処理↑↑↑↑↑↑↑↑↑↑↑↑↑↑