O Graphics.DrawImage é muito lento para imagens maiores?
Atualmente estou trabalhando em um jogo e gostaria de ter um menu principal com imagem de fundo.
No entanto, eu acho o métodoGraphics.DrawImage()
muito devagar. Eu fiz algumas medições. Vamos supor que o MenuBackground seja minha imagem de recurso com resolução de 800 x 1200 pixels. Vou desenhar em outro bitmap de 800 x 1200 (eu renderizo tudo em um bitmap de buffer primeiro, depois eu o dimensiono e finalmente desenho na tela - é assim que eu lido com a possibilidade de resoluções de vários jogadores. Mas isso não deve afetar de qualquer forma, veja o próximo parágrafo).
Então eu medi o seguinte código:
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");
O resultado é silencioso e surpreendente para mim - oStopwatch
mede alguma coisa entre40 - 50 milliseconds
. E como a imagem de fundo não é a única coisa a ser desenhada, todo o menu leva mais de 100 ms para ser exibido, o que implica lag previsível.
Eu tentei desenhá-lo para o objeto Graphics dado pelo evento Paint, mas o resultado foi30 - 40 milliseconds
- não mudou muito.
Então, isso significa queGraphics.DrawImage()
está inutilizável para desenhar imagens maiores? Se sim, o que devo fazer para melhorar o desempenho do meu jogo?