Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Immagini in C#
Forum - C# / VB.NET - Immagini in C#

Avatar
Matthew (Member)
Expert


Messaggi: 387
Iscritto: 29/01/2007

Segnala al moderatore
Postato alle 19:12
Mercoledì, 28/03/2007
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:

PM Quote
Avatar
scaricatore (Normal User)
Newbie


Messaggi: 9
Iscritto: 05/09/2006

Segnala al moderatore
Postato alle 21:40
Mercoledì, 28/03/2007
puoi usare il formato png o gif settando lo sfondo a invisibile?

PM Quote
Avatar
Matthew (Member)
Expert


Messaggi: 387
Iscritto: 29/01/2007

Segnala al moderatore
Postato alle 14:02
Giovedì, 29/03/2007
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:

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
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;)

PM Quote
Avatar
Matthew (Member)
Expert


Messaggi: 387
Iscritto: 29/01/2007

Segnala al moderatore
Postato alle 13:56
Venerdì, 30/03/2007
Allora mi rendo conto della mia ignoranza... Potresti essere + preciso (sono ignorante a proposito) come faccio?:k::k:

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
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();

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'

;)

PM Quote