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?

questionAnswers(4)

yourAnswerToTheQuestion