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:
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:
Public Texture As Texture2D
E nella inizializzazione aggiungiamo il caricamento della texture:
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)
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.
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:
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:
Potete trovare il codice completo qui:
Alla prossima guida, Movimenti, input, framerate e collisioni
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:
Salviamo l'immagine in una variabile:Private Function Texture_Da_File(ByVal File As String)
Return Texture2D.FromFile(Device, File)
End Function
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:
Potete trovare il codice completo qui:
Perfavore,
Entra
oppure
Registrati
per vedere i Link!
Alla prossima guida, Movimenti, input, framerate e collisioni