Graphics.DrawImage слишком медленный для больших изображений?
Я сейчас работаю над игрой и хочу, чтобы у меня было главное меню с фоновым изображением.
Тем не менее, я нахожу метод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 мс, что приводит к заметному отставанию.
Я попытался нарисовать его в объект Graphics, заданный событием Paint, но результат был30 - 40 milliseconds
- мало что изменилось.
Так значит ли это, чтоGraphics.DrawImage()
не подходит для рисования больших изображений? Если так, что я должен сделать, чтобы улучшить производительность моей игры?