• Regolamento Macrocategoria DEV
    Prima di aprire un topic nella Macrocategoria DEV, è bene leggerne il suo regolamento. Sei un'azienda o un hosting/provider? Qui sono anche contenute informazioni per collaborare con Sciax2 ed ottenere l'accredito nella nostra community!

Guida Vb.net & XNA - Caricare e Disegnare texture

Garu

Utente Attivo
Autore del topic
9 Ottobre 2011
412
0
Miglior risposta
0
Eccoci al secondo tutorial, ora impareremo a caricare una texture (immagine) e a disegnarla nella nostra scena, impareremo inoltre a gestire al meglio il nostro( seppur adesso semplice) codice.

NB: Questa guida è stata presa dal mio blog.


Partiamo dalla base dell'ultima guida:

Perfavore, Entra oppure Registrati per vedere i Link!


A questo punto abbiamo già inizializzato la nostra finestra, quindi possiamo passare al disegno.

Prima di disegnare dobbiamo caricare la nostra immagine, io utilizzerò il logo di questo blog Immagine

ho creato una semplice funzione per caricare un'immagine da un file:
Private Function Texture_Da_File(ByVal File As String)
Return Texture2D.FromFile(Device, File)
End Function
Salviamo l'immagine in una variabile:

Public Texture As Texture2D

E nella inizializzazione aggiungiamo il caricamento della texture:
Texture = Texture_Da_File("Logo.jpg")

Ovviamente sostituendo con il percorso del vostro file.

Ora dobbiamo creare l'oggetto che disegni la nostra immagine, questo oggetto è chiamato Spritebatch

Quindi :

Dim SB As SpriteBatch

E inizializziamolo (sempre nella funzione inizializza)
SB = New SpriteBatch(Device)

Ora possiamo finalmente passare al disegno:

Non usando template ci dobbiamo arrangiare, per aggiornare la nostra finestra (visto che non lo farà da sola) dovremo richiamare il metodo Invalidate.

Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)

Me.Invalidate()

End Sub

Da questo prima dell'aggiornamento della form metteremo il codice per il disegno, è importante che il disegno sia tutto dentro SB.Begin() eSB.End() altrimenti ovviamente genererà un eccezione.

Per disegnare la nostra immagine:

Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
Device.Clear(ClearOptions.Target, Microsoft.Xna.Framework.Graphics.Color.Blue, 1.0F, 0) ' Pulisce la scena
SB.Begin()
SB.Draw(Texture, New Rectangle(0, 0, Texture.Width, Texture.Height), Color.White) ' Disegna L'immagine
SB.End()
Device.Present() 'Visualizza la scena
Me.Invalidate() 'Aggiorna tutto facendo reiniziare il ciclo

End Sub

Come potete vedere all'inizio pulisco l'intera scena, in questo caso,essendo un immagine statica non sarebbe necessario, non è necessario pulire la scena neanche se abbiamo un immagine di sfondo.

Come potete vedere per disegnare l'immagine gli dovete dare un area e una posizione (New Rectangle(0, 0, Texture.Width, Texture.Height)) In questo caso la posizione è 0,0 quindi l'inizio della finestra , mentre le direzioni le carico direttamente dall'immagine.
Alla fine me.invaldate costringe all'aggiornamento della finestra il che fa tornare a "OnPaint" ridisegnando tutto.

Alla fine dovremo avere questo risultato:

sgxyl.png


Potete trovare il codice completo qui:
Perfavore, Entra oppure Registrati per vedere i Link!


Alla prossima guida, Movimenti, input, framerate e collisioni
 
Riferimento: Vb.net & XNA - Caricare e Disegnare texture

Stessa cosa per questa discussione : potresti fare un ottimo lavoro se spiegassi passo passo le singole istruzioni :soso: