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

Guida J2ME - 30: colori e font per il testo

Guida J2ME, corso base java microedition

 

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'.

 

Pagina di Francesco Milanese (redbaron85) su Facebook   Pagina di Francesco Milanese (redbaron85) su Google Plus   Profilo di Francesco Milanese (redbaron85) su LinkedIn   Pagina di Francesco Milanese (redbaron85) su Twitter   Canale Youtube di Francesco Milanese (redbaron85ct)

Vai all'inizio della pagina