Documento guida - Dipartimento di Ingegneria informatica

NONA ESERCITAZIONE DI LABORATORIO
Informatica Grafica – Ingegneria Edile Architettura
29/4/2002 – a.a. 2001/2002
Riferimento: Horstmann, “Concetti di Informatica e fondamenti di Java 2”, ed. Apogeo, cifr. §6.
Font e Grafica in Java
ESERCIZIO 1: Scrivere un’applet che mostri i parametri
fondamentali di un font (vedi figura di lato). Selezionare uno stile
con grazie ed in grassetto per scrivere il messaggio “Applet”. I
parametri del messaggio ascesa, discesa, interlinea e giustezza
vanno messi in evidenza come in figura.
Applet
Ascesa
Discesa
Interlinea
Giustezza
Per impostare un font (stile e dimensione dei caratteri) bisogna
creare prima di tutto un oggetto font e poi impostarlo
nell’ambiente grafico.
Font f = new (“Serif”,Font.BOLD,60);
g2.setFont(f);
Le due istruzioni di sopra creano un font con grazie (“Serif”) delle
dimensione di 60 punti in grassetto (Font.BOLD). g2 è un oggetto
della classe Graphics2D. Tutte le stringhe stampate d’ora in avanti
avranno le caratteristiche del font specificato col metodo setFont.
E’ possibile stampare una stringa in una applet specificando le
coordinate di localizzazione utilizzando il metodo drawString
della classe Graphics2D:
g2.drawString(“Applet”, x, y);
Un messaggio è caratterizzato da quattro parametri fondamentali dipendenti dal font correntemente attivo: giustezza, ascesa,discesa,
interlinea. Per ricavare la dimensione di tali parametri espressa in pixel bisogna utilizzare le classi java.awt.font.FontRenderContext,
java.awt.font.TextLayout, attraverso cui andrà creato un contesto grafico utilizzato successivamente per istanziare un oggetto di
tipo TextLayout. Su questo oggetto potranno essere chiamati degli opportuni metodi per ricavare i suddetti parametri.
FontRenderContext context = g2.getFontRenderContext();
TextLayout layout=new TextLayout(message, f, context);
float advance = layout.getAdvance();
float ascent = layout.getAscent();
float descent= layout.getDescent();
float leading= layout.getLeading();
ESERCIZIO 2: Scrivere un’applet per disegnare il grafico della
funzione:
y(x) = 1+ x^2/sen(x)
per un intervallo delle x pari a [-20,20] e delle y pari a [-300,300].
Tracciare gli assi delle ascisse e delle ordinate etichettati con, “x” ed
“f(x)”, rispettivamente, e con suddivisioni ogni 10 pixel. Localizzare
inoltre i punti di massimo e di minimo relativo della funzione e
stamparne le coordinate sul grafico in corrispondenza di tali punti.
f(x)
(-17.15, 297.55)
(14.0, 198.86)
(-10.8, 119.9)
(7.59, 60.67)
(-4.26, 21.17)
x
(4.26, -21.17)
(-7.59, -60.67)
(10.8, -119.9)
(-14.0, -198.86)
(17.15, -297.55)
SUGGERIMENTI:
- Modificare il sorgente del secondo esercizio svolto nella settima
esercitazione.
- Individuare un massimo o un minimo relativo in una successione
di valori delle ordinate, verificando le seguenti condizioni:
f(xk-1) < f(xk) ; f(xk+1) < f(xk)
(massimo in f(xk))
f(xk-1) > f(xk) ; f(xk+1) > f(xk)
(minimo in f(xk))