В настоящее время я работаю над игрой, и хочу иметь главное меню с фоновым изображением.
Однако метод Graphics.DrawImage()
очень медленный. Я сделал некоторые измерения. Предположим, что MenuBackground - это мое изображение ресурса с разрешением 800 x 1200 пикселей. Я нарисую его на другой 800 x 1200 bitmap (сначала я делаю все для растрового изображения буфера, затем масштабирую его и, наконец, рисую на экране, - как я имею дело с возможностью разрешения нескольких игроков, но это не должно влиять это в любом случае, см. следующий параграф).
Итак, я измерил следующий код:
Stopwatch SW = new Stopwatch();
SW.Start();
// First let 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 мс, что подразумевает наблюдаемое отставание.
Я попытался привлечь его к объекту Graphics, заданному событием Paint, но результат был 30 - 40 milliseconds
- не сильно изменился.
Итак, означает ли это, что Graphics.DrawImage()
непригодно для рисования больших изображений? Если да, то что мне делать, чтобы улучшить производительность моей игры?