Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 18 di 53
  • livello principiante
Indice lezioni

Il metodo Draw

Tutti i parametri necessari per disegnare forme e testi
Tutti i parametri necessari per disegnare forme e testi
Link copiato negli appunti

Il metodo SpriteBatch.Draw ha una serie di overload; questi overload hanno un sottoinsieme dei parametri fondamentali di una operazione di disegno 2D. Vediamo l'overload più completo del metodo Draw, ossia quello che prende tutti i parametri senza escluderne nessuno:

void Draw(Texture2D texture, Rectangle destinationRectangle, Rectangle sourceRectangle, Color color, float rotation, Vector2 origin, SpriteEffects effects, float layerDepth);

I parametri sono:

Parametro Descrizione
texture la texture da applicare all'operazione di disegno
destination rectangle l'area (in pixel, su schermo) su cui disegnare la texture
source rectangle le coordinate di texture ((0,0,texture.Width,texture.Height) applica l'intera texture su tutto il rettangolo)
color il colore da moltiplicare per i colori dei pixel della texture componente per componente
rotation la rotazione da applicare al rettangolo, in radianti e intorno all'asse Z
origin l'origine della rotazione (e della scala)
effects eventuali effetti di ribaltamento da applicare alla texture
layer depth la profondità per determinare se questa texture è sopra o sotto ad altre

void Draw(Texture2D texture, Vector2 position, Rectangle? sourceRectangle, Color color, float rotation, Vector2 origin, Vector2 scale, SpriteEffects effects, float layerDepth);

Possiamo anche specificare la posizione come un vettore a due dimensioni (position) e una scala (scale) invece del destination rectangle.

Se non siamo interessati a tutti questi parametri, allora possiamo usare una variante che ne annulla molti; ad esempio, niente rotazione, niente scala, nessun effetto, profondità zero, etc:

void Draw(Texture2D texture, Rectangle destinationRectangle, Color color);

oppure se invece del destination rectangle preferiamo la position:

public void Draw(Texture2D texture, Vector2 position, Color color);

Analogamente possiamo scegliere di disegnare il testo con molti parametri e un alto grado di controllo oppure con pochi parametri e meno controllo ma maggiore semplicità:

void DrawString(SpriteFont spriteFont, StringBuilder text, Vector2 position, Color color, float rotation, Vector2 origin, Vector2 scale, SpriteEffects effects, float layerDepth);
void DrawString(SpriteFont spriteFont, string text, Vector2 position, Color color, float rotation, Vector2 origin, Vector2 scale, SpriteEffects effects, float layerDepth);

Nel caso del metodo DrawString (e in tutte le sue varianti) invece di specificare una texture dobbiamo indicare una stringa e lo SpriteFont con cui disegnarla; inoltre non ha senso specificare il destination rectangle (o il source rectangle) ma solo il punto di partenza del primo carattere ed eventualmente la scala da adoperare.

Alternativamente invece di una stringa possiamo optare per un più leggero StringBuilder. La variante con il minimo numero di parametri mantiene solo il testo da disegnare, lo SpriteFont, la posizione in cui disegnarlo e il colore di tinteggiatura:

void DrawString(SpriteFont spriteFont, string text, Vector2 position, Color color);
void DrawString(SpriteFont spriteFont, StringBuilder text, Vector2 position, Color color);

Ti consigliamo anche