Come potrete facilmente immaginare, le immagini non sono l’unica componente grafica di un gioco. Molto spesso, infatti, anche nel gioco più semplice dobbiamo fare uso dei font: si pensi alla creazione delle GUI, delle varie interfacce o anche al punteggio del più semplicistico clone di pong.

Insomma, per poter fare qualcosa di decente abbiamo bisogno di uno strumento versatile che ci consenta di gestire i fonts e l’output testuale senza troppi problemi. In nostro aiuto, per quanto riguarda l’SDL.NET, arriva la classe Font. E sarà proprio nelle prossime righe che cercheremo di analizzare, almeno nelle sue basi, questo utile strumento.

Per prima cosa vediamo come iniziare ad usare un oggetto di questo tipo.

Font f1 = new Font(“font1.ttf”, 14);

f1 è un oggetto di tipo Font. Nel nostro caso, al costruttore passiamo una stringa con il nome del font utilizzato ed un intero che indica la grandezza del testo. Nulla di più semplice ed intuitivo. Dopo questa dichiarazione, in memoria abbiamo già il nostro font pronto ad essere utilizzato.

Adesso però dobbiamo scrivere qualcosa: ecco, qui di seguito, il codice che ci serve.

Surface testo = f1.Render(“testo da scrivere!”, System.Drawing.Color.Black);

Surface testo = f1.Render(“testo da scrivere!”, System.Drawing.Color.Black, System.Drawing.Color.White);

Volendo spiegare in parole povere il funzionamento del meccanismo, pensate alla surface testo come un “foglio”, e all’oggetto f1 come una “stampante”. Nella prima riga di codice che ho riportato stiamo dicendo ad f1 di “stampare” sulla Surface “testo” la stringa “testo da scrivere!”, in colore nero. La surface, successivamente, sarà pronta per essere utilizzata. Il metodo Render ha svariati overload, tra cui l’altro che ho riportato: oltre al testo e il colore, nel metodo passiamo come terzo argomento anche il colore di sfondo da utilizzare.

La personalizzazione del testo, tuttavia, non finisce qui: la classe Font mette a disposizione svariate proprietà di customizzazione e formattazione, per fornire la massima flessibilità. Di seguito qualche esempio.

  • Proprietà Bold: permette di decidere se il testo da renderizzare sarà in grassetto oppure no. Di default, questa proprietà è settata su False.
  • Proprietà Italic: in questo caso possiamo decidere se il nostro testo sarà in corsivo oppure no. La proprietà è impostata su False di default.
  • Proprietà Underline: Impostata su False normalmente, questa proprietà consente di decidere se il testo da renderizzare sarà sottolineato.

Oltre a queste proprietà c’è un’altra che riassume tutte e tre contemporaneamente, che si chiama Style. I valori che può assumere sono compresi nell’enumerazione SdlDotNet.Graphics.Styles. Ecco un esempio pratico qui di seguito.

f1.Style = Styles.Underline;

Insomma, la gestione del testo, almeno a livello base,è veramente molto semplice e facile da capire. Ovviamente, le cose si possono complicare se ci sono necessità riguardanti, per esempio, testi multilinea: a tutto però c’è una soluzione. Ma per adesso rimarremo sul semplice.

Come avete potuto notare dagli esempi (e se non l’avete notato ci penso io ;) ) i colori usati nei testi e negli sfondi sono quelli compresi nella struct System.Drawing.Colors. In questo modo avremo già pronti un sacco di colori.

Ma cosa fare se abbiamo necessità di utilizzare un colore di cui conosciamo perfettamente i valori RGB? Non c’è problema, ecco la sintassi!

f1.Render(“testo da scrivere!”, System.Drawing.Color.FromArgb(0, 0, 0));

La struttura Color infatti presenta il metodo FromArgb, dove rgb sta per Red, Green e Blue. Un attimo.. ma la A? FromArgb presenta anche due overload, ed uno sguardo veloce all’intellisense permette di capire subito di cosa si tratta: parliamo di Alpha, ed il valore che può assumere va da 0 a 255.

Un’altro overload di FromArgb consente invece di fornire come parametro un int a 32 bit nel quale specificare il numero ARGB che rappresenta il nostro colore. Come potete vedere c’è l’imbarazzo della scelta anche in questo caso.

Prima di concludere questa parte, dovete sapere che esiste anche un altro strumento per gestire i testi: parlo di TextSprite, contenuto in SdlDotNet.Graphics.Sprites. Stavolta, però, ci si ferma alla gestione base dei fonts e riprenderemo il discorso successivamente.

Adesso, infatti, lasciamo perdere per un po’ il mondo della vista, per addentrarci in quello dell’udito :) Nel prossimo articolo parleremo di Audio per i nostri programmi.

  • Share/Bookmark