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);