Ist Graphics.DrawImage für größere Bilder zu langsam?

Ich arbeite gerade an einem Spiel und möchte ein Hauptmenü mit Hintergrundbild haben.

Ich finde jedoch die MethodeGraphics.DrawImage() wirklich langsam. Ich habe etwas gemessen. Angenommen, MenuBackground ist mein Ressourcenbild mit einer Auflösung von 800 x 1200 Pixel. Ich werde es auf eine andere 800 x 1200-Bitmap zeichnen (ich rendere alles zuerst in eine Puffer-Bitmap, skaliere es dann und zeichne es schließlich auf den Bildschirm - so gehe ich mit der Möglichkeit von Auflösungen für mehrere Spieler um. Dies sollte sich jedoch nicht auswirken es in irgendeiner Weise, siehe den nächsten Absatz).

Also habe ich den folgenden Code gemessen:

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");

Das Ergebnis ist für mich ziemlich überraschend - dasStopwatch misst etwas dazwischen40 - 50 milliseconds. Und da nicht nur das Hintergrundbild gezeichnet werden muss, dauert die Anzeige des gesamten Menüs über 100 ms, was zu einer beobachtbaren Verzögerung führt.

Ich habe versucht, es auf ein vom Paint-Ereignis angegebenes Grafikobjekt zu zeichnen, aber das Ergebnis war30 - 40 milliseconds - nicht viel verändert.

Also, heißt das, dassGraphics.DrawImage() ist zum Zeichnen größerer Bilder unbrauchbar? Wenn ja, was soll ich tun, um die Leistung meines Spiels zu verbessern?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage