Oppure

Loading
28/03/07 17:12
Matthew
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à.:k::k::k:
aaa
28/03/07 19:40
scaricatore
puoi usare il formato png o gif settando lo sfondo a invisibile?
aaa
29/03/07 12:02
Matthew
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! :k::k::k:
aaa
30/03/07 10:36
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;)
30/03/07 11:56
Matthew
Allora mi rendo conto della mia ignoranza... Potresti essere + preciso (sono ignorante a proposito) come faccio?:k::k:
aaa
30/03/07 18:03
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'

;)