NOTA! Questo sito utilizza i cookie e tecnologie simili.

Se non si modificano le impostazioni del browser, l'utente accetta. Per saperne di piu'

Approvo

Capitolo 30: Colori, font, testo.

 

In questo capitolo parleremo di come impostare il colore primario dell'oggetto Graphics (verrà utilizzato per scrivere e riempire figure geometriche), impostare un font per il testo e, quindi, scrivere e mostrare a video delle stringhe.

 

 

In J2ME, è possibile definire i colori in due modi:

  • con un unico intero formattato come segue: 0x00RRGGBB (RR per rosso, GG per verde, BB per blue);
  • con tre numeri, rappresentanti i valori RGB (rosso, verde, blue);

Per impostare il colore della classe Graphics è possibile utilizzare i metodi:

  • setColor(int RGB)   :   void;
  • setColor(int red, int green, int blue)   :   void; .

Il colore di default è il nero.

Una volta impostato il colore di Graphics, tutto ciò che verrà disegnato (o scritto, nel caso delle stringhe) userà il colore specificato; per cambiare colore, bisognerà invocare nuovamente uno dei due metodi.

 

 

Per definire un Font è possibile utilizzare i seguenti metodi (tutti static):

getDefaultFont()   :   Font Restituisce il font di default del dispositivo.
getFond(int fontSpecifier)   :   Font Restituisce un font standard del dispositivo; fontSpecifier può assumere uno tra i seguenti valori: FONT_INPUT_TEXT, FONT_STATIC_TEXT.
getFont(int face, int style, int size)   :   Font Restituisce un font 'costruito' su misura (vd. in seguito).

I valori possibili per il parametro face sono: FACE_SYSTEM, FACE_MONOSPACE, FACE_PROPORTIONAL.

I valori possibili per il parametro style sono: STYLE_PLAIN, o una combinazione ( con or | )di STYLE_BOLD, STYLE_ITALIC, STYLE_UNDERLINED.

I valori possibili per il parametro size sono: SIZE_SMALL, SIZE_MEDIUM, SIZE_LARGE.

Una volta ottenuto il font, lo si può impostare con il metodo:

  • setFont(Font f)   :   void; .

 

Per scrivere del testo possiamo avvalerci di due metodi di Graphics:

  • drawChar(char caratter, int x, int y, int anchor);
  • drawString(String stringa, int x, int y, int anchor; .

Il primo metodo disegna un singolo carattere, il secondo una stringa.

I parametri x e y si riferiscono alle coordinate per il posizionamento degli oggetti nel display.

Il parametro 'anchor' serve a specificare il 'punto di ancoraggio' della testo, che avrà coordinate x e y. Il valore di anchor dev'essere un OR dei due set di valori orizzontali (LEFT, HCENTER, RIGHT) e verticali (TOP, BASELINE, BOTTOM). Ecco un esempio di utilizzo di drawString:

  • g.drawString(str, x + f.stringWidth(str)/2, y, TOP|HCENTER);   .

 

Graphics mette a disposizione, inoltre, i seguenti metodi:

  • drawChars(char[] data, int offset, int length, int x, int y, int anchor) ;
  • drawSubstring(String str, int offset, int len, int x, int y, int anchor) ; .

Il loro scopo è chiaro, così come la natura e la funzione dei loro parametri.

 

NOTA IMPORTANTE: il sistema di riferimento del contesto grafico prevede l'origine degli assi (valore di X e Y pari a 0) nel vertice in alto a sinistra del display; spostandosi verso destra, la coordinata X assumerà valori positivi, mentre avremo valori di Y maggiori di zero andando verso il basso a partire da quel vertice. Le 'misure' sono espresse sempre in pixel.

Esempio: se il nostro display ha altezza 100 pixel e larghezza 80 pixel, il punto di coordinata (40, 50) corrisponderà al centro del display.

 

Testare quanto detto è semplicissimo: create una MIDlet con una vostra Canvas (una classe che estende Canvas, come quelle mostrate nei capitoli relativi alla gestione degli eventi da tastiera o da pennino), e scrivete al suo interno il seguente metodo paint:

protected void paint(Graphics g) // Le classi che ereditano da Canvas devono sovrascrivere questo metodo
{

// Recupero larghezza e altezza del display e creo due variabili per le coordinate degli elementi da visualizzare
int w = this.getWidth();
int h = this.getHeight();
int posX = 10;
int posY = 100;

// Imposto il colore del Graphics (nota: 255, 255, 255 identifica il bianco).
g.setColor(5,25,100);

// Creo due stringhe
String messaggio1 = "Messaggio 1";
String messaggio2 = "Messaggio 2";

// Disegno la prima stringa sul display
g.drawString(messaggio1, posX, posY, Graphics.TOP|Graphics.LEFT);

// Creo un Font e lo imposto come Font del Graphics, per utilizzarlo come Font per la seconda stringa
Font f = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD+Font.STYLE_ITALIC+Font.STYLE_UNDERLINED, Font.SIZE_LARGE);
g.setFont(f);

// Cambio le coordinate di posizione per posizionare altrove la seconda stringa
posX = posX + 40;
posY = posY + 40;

// Disegno la seconda stringa sul display.
g.drawString(messaggio2, posX, posY, Graphics.TOP|Graphics.LEFT);
}

 

Ricordate che nel metodo paint potete inserire variabili flags e altri controlli per aggiornare, di volta in volta (ad esempio, a seguito della pressione di un tasto), l'insieme di primitive grafiche da mostrare a video, se la vostra applicazione richiede, appunto, una 'grafica cangiante'.

 

 
Vai all'inizio della pagina