Io ho scritto uno shoot'emup che sfrutta proprio questo principio, e' stato sviluppato con visual studio 2005 e c#, usando le librerie del .NET grafiche, si puo' fare praticamente tutto, ecco il pezzeto di codice che ti interessa:
Creare due oggetti e istanziarne uno di tipo BufferedGraphicsContext
----------------------------------------
BufferedGraphicsContext buffer = new BufferedGraphicsContext();
BufferedGraphics buf;
-----------------------------------------
Abbiamo ora un buffer di memoria dove scrivere
Ora dobbiamo comunicare le dimensioni e creare di fatto il buffer video
-----------------------------------------
Rectangle rect = new Rectangle(0, 0, Form1.ActiveForm.Width, Form1.ActiveForm.Height);
buf = buffer.Allocate(Form1.ActiveForm.CreateGraphics(), rect);
-------------------------------------------
Ovviamente Form1 e' la tua form, e ne prelevo i valori in pixel X,Y per istanziare il buffer video
Adesso e' sufficente che tu disegni sul buffer video tutto cio che normalmente disegneresti dentro al foglio della form ES:
buf.Graphics.DrawImage(gameover, 0, 0);
etc.....
Alla fine quando il frame e' completo
dobbiamo randerizzare il buffer video sullo schermo della form cosi:
--------------------------------------------
buf.Render();
Poi cancelliamo il buffer e ripetiamo il ciclo magari il tutto dentro ad un timer ok?
---------------------------------------------
buf.Graphics.Clear(Color.Black);
-------------------------------------------
Un po' complicato spiegarlo qui cmq il codice che ti serve e' tutto qua'