Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Ho realizzato un paio di piccoli e semplici giochini in c# che utilizzano una palla che si muove. Il problema è che uso un'immagine come pictureBox e questa si trascina anche sempre dietro lo sfondo rettangolare. Come posso eliminarlo e lasciare solo la palla? Ringrazio in anticipo chi mi aiuterà.
Ho fatto quello che mi dicevi, ma non ho ancora risolto il problema principale. E' possibile cambiare la forma di una picturebox? Rettangolare è abbastanza scomoda!
()
Newbie
Messaggi: Iscritto:
Postato alle 12:36
Venerdì, 30/03/2007
Il problema principale, e' che devi disegnare dentro ad un buffer video tutto il frame della scena, e poi solo quando e' fatto riversarlo sul monitor,cosi' la scena verra' sepre ridisegnata e nn esisteranno ne sfarfallii ne tracciati sporchi da repaint
Allora mi rendo conto della mia ignoranza... Potresti essere + preciso (sono ignorante a proposito) come faccio?
()
Newbie
Messaggi: Iscritto:
Postato alle 20:03
Venerdì, 30/03/2007
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();
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);
-------------------------------------------
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'