Czy Graphics.DrawImage jest zbyt wolny dla większych obrazów?

Obecnie pracuję nad grą i chcę mieć menu główne z obrazem tła.

Jednak znajduję metodęGraphics.DrawImage() bardzo wolno. Dokonałem pewnych pomiarów. Załóżmy, że MenuBackground jest moim obrazem zasobów o rozdzielczości 800 x 1200 pikseli. Narysuję go na innej bitmapie 800 x 1200 (renderuję wszystko najpierw na bitmapę bufora, potem skaluję ją i ostatecznie rysuję na ekranie - tak radzę sobie z możliwościami rozdzielczości wielu graczy. Ale to nie powinno mieć wpływu na w jakikolwiek sposób, patrz następny akapit).

Zmierzyłem więc następujący kod:

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

Rezultat jest dla mnie cichy i zaskakującyStopwatch mierzy coś między40 - 50 milliseconds. A ponieważ obraz tła nie jest jedyną rzeczą do narysowania, całe menu zajmuje około 100 ms do wyświetlenia, co implikuje obserwowalne opóźnienie.

Próbowałem narysować go do obiektu Graphics podanego przez zdarzenie Paint, ale wynik był30 - 40 milliseconds - niewiele się zmieniło.

Więc to znaczyGraphics.DrawImage() nie nadaje się do rysowania większych obrazów? Jeśli tak, co powinienem zrobić, aby poprawić wydajność mojej gry?

questionAnswers(4)

yourAnswerToTheQuestion