私は現在ゲームに取り組んでおり、背景画像付きのメイン メニューが必要です。
ただし、この方法Graphics.DrawImage()
は非常に遅いと思います。私はいくつかの測定を行いました。MenuBackground が解像度 800 x 1200 ピクセルの私のリソース画像であると仮定しましょう。それを別の 800 x 1200 ビットマップに描画します (最初にすべてをバッファ ビットマップにレンダリングし、次にそれをスケーリングし、最後に画面に描画します。これが、複数のプレイヤーの解像度の可能性に対処する方法です。しかし、影響はありません。次の段落を参照してください)。
だから私は次のコードを測定しました:
Stopwatch SW = new Stopwatch();
SW.Start();
// First let's render background image into original-sized bitmap:
OriginalRenderGraphics.DrawImage(Properties.Resources.MenuBackground,
new Rectangle(0, 0, Globals.OriginalScreenWidth, Globals.OriginalScreenHeight));
SW.Stop();
System.Windows.Forms.MessageBox.Show(SW.ElapsedMilliseconds + " milliseconds");
結果は静かで驚くべきStopwatch
もの40 - 50 milliseconds
です。また、描画されるのは背景画像だけではないため、メニュー全体が表示されるまでに約 100 ミリ秒以上かかります。これは、目に見える遅延を意味します。
Paint イベントで指定された Graphics オブジェクトに描画しようとしましたが、結果は30 - 40 milliseconds
あまり変わりませんでした。
Graphics.DrawImage()
ということは、それは大きな画像を描くのには使えないということですか? その場合、ゲームのパフォーマンスを向上させるにはどうすればよいですか?