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