Progetto di applicazioni grafiche. Disegno di forme complesse Prassi : un classe per ciascuna forma Progetta la forma individuando le componenti base.

Slides:



Advertisements
Presentazioni simili
Training On Line - CONP. 2 Richiesta Da Menu: Conferimenti ad inizio anno termico > Agosto > Pluriennali > Nuova Richiesta Si accede alla pagina di Richiesta.
Advertisements

Numeri a 100 Electronic flashcard. 1 uno ritorno.
Dipartimento di Ingegneria Idraulica e Ambientale - Universita di Pavia 1 Caduta non guidata di un corpo rettangolare in un serbatoio Velocità e rotazione.
Presente e futuro della religiosità nel nord est DIFFERENZE TRA GENERAZIONI figli e padri italo de sandre 1ids.
Valutazione d’Istituto A.S. 2008/2009
MONITORAGGIO MATEMATICA V A Alunni 26 Presenti 23 Quesiti 44 Risposte totali 650 Risultato medio 28,3 media 64,2%
1 MeDeC - Centro Demoscopico Metropolitano Provincia di Bologna - per Valutazione su alcuni servizi erogati nel.
TAV.1 Foto n.1 Foto n.2 SCALINATA DI ACCESSO ALL’EREMO DI SANTA CATERINA DEL SASSO DALLA CORTE DELLE CASCINE DEL QUIQUIO Foto n.3 Foto n.4.
1 Pregnana Milanese Assessorato alle Risorse Economiche Bilancio Preventivo P R O P O S T A.
Frontespizio Economia Monetaria Anno Accademico
1 la competenza alfabetica della popolazione italiana CEDE distribuzione percentuale per livelli.
Elementi di programmazione grafica
Elementi di programmazione grafica
Programmazione ad Eventi
EIE 0607 III / 1 A B P a = 30 P b = 35 t = 2, tc = 1 Questo può essere un equilibrio? No! Politiche di un paese importatore: una tariffa allimportazione.
Varianza campionaria Errore standard della varianza campionaria
Programmazione 1 9CFU – TANTE ore
ELEZIONI REGIONALI 2010 PRIMI RISULTATI E SCENARI 14 aprile 2010.
Canale A. Prof.Ciapetti AA2003/04
Ufficio Studi UNIONCAMERE TOSCANA 1 Presentazione di Riccardo Perugi Ufficio Studi UNIONCAMERE TOSCANA Firenze, 19 dicembre 2000.
Grafico di funzione Disegna la Matematica.
1 Eventi/2 Più movimento alle classi. 2 Eventi Java Modo per intercettare il verificarsi di certe condizioni / azioni e fare in modo che venga eseguito.
Esercizi di grafica ….
Già primario f.f. U.O. di neurochirurgia
Master universitario di II livello in Ingegneria delle Infrastrutture e dei Sistemi Ferroviari Anno Accademico 2012/2013 Cultura dimpresa, valutazione.
La partita è molto combattuta perché le due squadre tentano di vincere fino all'ultimo minuto. Era l'ultima giornata del campionato e il risultato era.
Dipartimento di Ingegneria Idraulica e Ambientale - Universita di Pavia 1 Scritte scritte scritte scritte scritte scritte scritte Scritte scritte Titolo.
Dipartimento di Ingegneria Idraulica e Ambientale - Universita di Pavia 1 Simulazione di un esperimento di laboratorio: Caduta di un corpo quadrato in.
MP/RU 1 Dicembre 2011 ALLEGATO TECNICO Evoluzioni organizzative: organico a tendere - ricollocazioni - Orari TSC.
COMPLETAMENTI Mil.Tslc All
Programmazione ad Oggetti AA 2011– Contenuti del corso Modulo A Tecniche di programmazione Docente: Prof. Michele Bugliesi Modulo B Tecniche di.
Cos’è un problema?.
Capitolo 2 Utilizzare oggetti
Capitolo 9 Interfacce e polimorfismo
Capitolo 3 Realizzare classi
Gli italiani e il marketing di relazione: promozioni, direct marketing, digital marketing UNA RICERCA QUANTITATIVA SVOLTA DA ASTRA RICERCHE PER ASSOCOMUNICAZIONE.
Lezione 2 La progettazione degli esperimenti
STILI DI APPRENDIMENTO ED EVOLUZIONE INTERFACCE
19 Lezione 21/5/04 Composizione dell'immagine 1 COMPOSIZIONE DELLIMMAGINE.
OO _60-59_ OI_53-54 _ OL _ OR_52-47_ OO= Orientamento allOBIETTIVO OI= Orientamento all'INNOVAZIONE OL= Orientamento alla LEADERSHIPOR= Orientamento.
CHARGE PUMP Principio di Funzionamento
Settimana: 3-7 marzo Orariolunedimartedi Mercoledi 5 Giovedi 6 Venerdi lezione intro alla fis mod DR lezione intro alla fis mod DR.
2 3 4 RISERVATEZZA INTEGRITA DISPONIBILITA 5 6.
Q UESTIONI ETICHE E BIOETICHE DELLA DIFESA DELLA VITA NELL AGIRE SANITARIO 1 Casa di Cura Villa San Giuseppe Ascoli Piceno 12 e 13 dicembre 2011.
Q UESTIONI ETICHE E BIOETICHE DELLA DIFESA DELLA VITA NELL AGIRE SANITARIO 1 Casa di Cura Villa San Giuseppe Ascoli Piceno 12 e 13 dicembre 2011.
1 Negozi Nuove idee realizzate per. 2 Negozi 3 4.
ORDINE DI CHIAMATA a 1minuto e 2 minuti PRINCIPALI TEMPI DELLA COMPETIZIONE ORDINE DI CHIAMATA a 1minuto e 2 minuti PRINCIPALI TEMPI DELLA COMPETIZIONE.
Scheda Ente Ente Privato Ente Pubblico. 2ROL - Richieste On Line.
1 Guida per linsegnamento nei corsi per il conseguimento del CERTIFICATO DI IDONEITÀ ALLA GUIDA DEL CICLOMOTORE.
ISTITUTO COMPRENSIVO “G. BATTAGLINI” MARTINA FRANCA (TA)
Esordienti RESPONSABILE TECNICO Portieri Calcio Gallico 2001
Bando Arti Sceniche. Per poter procedere è indispensabile aprire il testo del Bando 2ROL - Richieste On Line.
LE SAI LE TABELLINE? Mettiti alla prova!.
RILEVAZIONE DEI LIVELLI DI COMPETENZA MATEMATICA ANNO SCOLASTICO 2007/2008 BY PROCIDA.
1 Questionario di soddisfazione del servizio scolastico Anno scolastico 2011/2012 Istogramma- risposte famiglie.
Un trucchetto di Moltiplicazione per il calcolo mentale
Navigazione piana, introduzione pns pnr.
21 marzo 2002 (ri-)Avvisi: Giovedi 28 marzo la lezione e sospesa. Nuovo indirizzo di Spedire messaggi e esercizi solo.
Prima rilevazione sullo stato di attuazione della riforma degli ordinamenti nelle istituzioni scolastiche in LOMBARDIA Attuazione del D.L. 59/2003 a.s.
Settimana: 10 – 14 marzo Orariolunedimartedi Mercoledi 12 Giovedi 13 Venerdi Lezione Dal c al c Lezione Dal c al c
Esempi risolti mediante immagini (e con excel)
1Piero Scotto - C14. Finalità del corso Programma Materiale Requisiti Spendibilità 2Piero Scotto - C14.
Sviluppare un programma in C che, dato un array da 100 elementi interi caricato con numeri casuali compresi tra [10,100], sia in grado di cercare il valore.
NO WASTE Progetto continuità scuola primaria scuola secondaria Salorno a.s. 2013_
I chicchi di riso e la sfida al Bramino
Mercato del lavoro e condizione giovanile: la crisi si acuisce
Il numero più grande Accademia dei Lincei
1 Ministero dell’Istruzione, dell’Università e della Ricerca Dipartimento per la Programmazione e la Gestione delle risorse umane, finanziarie e strumentali.
IL GIOCO DEL PORTIERE CASISTICA. Caso n. 1 Il portiere nella seguente azione NON commette infrazioni.
Timer Animazioni.
Transcript della presentazione:

Progetto di applicazioni grafiche

Disegno di forme complesse Prassi : un classe per ciascuna forma Progetta la forma individuando le componenti base class Car {... public void draw(Graphics2D g) { // Istruzioni per il disegno... } }

Esempio: due automobili

Progetto della Forma Origine e punto di riferimento della forma

File Car.java 01: import java.awt.Graphics2D; 02: import java.awt.Rectangle; 03: import java.awt.geom.Ellipse2D; 04: import java.awt.geom.Line2D; 05: import java.awt.geom.Point2D; 06: 07: /** 08: Una forma di auto posizionabile in un un punto qualunque di una finestra. 09: */ 10: public class Car 11: { 12: /** 13: Costruisce una auto a partire da una data origine x la coordinata x dellorigine y la coordinata y dellorigine 16: */ Continua…

File Car.java 17: public Car(int x, int y) 18: { 19: xLeft = x; 20: yTop = y; 21: } 22: 23: /** 24: Disegna lauto. g2 il contesto grafico per il disegno 26: */ 27: public void draw(Graphics2D g2) 28: { 29: Rectangle scocca 30: = new Rectangle(xLeft, yTop + 10, 60, 10); 31: Ellipse2D.Double ruotaAnteriore 32: = new Ellipse2D.Double(xLeft + 10, yTop + 20, 10, 10); 33: Ellipse2D.Double ruotaPosteriore Continua…

File Car.java 34: = new Ellipse2D.Double(xLeft + 40, yTop + 20, 10, 10); 35: 36: // estremo inferiore del parabrezza 37: Point2D.Double p1 38: = new Point2D.Double(xLeft + 10, yTop + 10); 39: // estremo anteriore del tetto 40: Point2D.Double p2 41: = new Point2D.Double(xLeft + 20, yTop); 42: // estremo posteriore del tetto 43: Point2D.Double p3 44: = new Point2D.Double(xLeft + 40, yTop); 45: // estremo inferiore del lunotto 46: Point2D.Double p4 47: = new Point2D.Double(xLeft + 50, yTop + 10); 48: 49: Line2D.Double parabrezza 50: = new Line2D.Double(p1, p2); Continua…

File Car.java 51: Line2D.Double tetto 52: = new Line2D.Double(p2, p3); 53: Line2D.Double lunotto 54: = new Line2D.Double(p3, p4); 55: 56: g2.draw(scocca); 57: g2.draw(ruotaAnteriore); 58: g2.draw(ruotaPosteriore); 59: g2.draw(parabrezza); 60: g2.draw(tetto); 61: g2.draw(lunotto); 62: } 63: 64: public static int WIDTH = 60; 65: public static int HEIGHT = 30; 66: private int xLeft; 67: private int yTop; 68: }

Costruiamo lapplicazione

JComponent contenente il disegno Ricordiamo: istruzioni per il disegno nel metodo paintComponent Posizione in basso a dx: getWidth e getHeight chiamati sulloggetto che esegue paintComponent Se cambia la dimensione della finestra paintComponent viene invocato e la posizione dellauto ricalcolata int x = getWidth() – Car.WIDTH; int y = getHeight()– Car.HEIGHT; Car bottomCar = new Car(x, y); Continua…

File CarComponent.java 01: import java.awt.Graphics; 02: import java.awt.Graphics2D; 03: import javax.swing.JComponent; 04: 05: /** 06: This component draws two car shapes. 07: */ 08: class CarComponent extends JComponent 09: { 10: public void paintComponent(Graphics g) 11: { 12: Graphics2D g2 = (Graphics2D) g; 13: 14: Car topCar = new Car(0, 0); 15: Continua…

File CarComponent.java 16: int x = getWidth() - Car.WIDTH; 17: int y = getHeight() - Car.HEIGHT; 18: 19: Car bottomCar = new Car(x, y); 20: 21: topCar.draw(g2); 22: bottomCar.draw(g2); 23: } 24: } Il metodo draw della classe Car invoca i metodi del contesto grafico g2 per comporre il disegno

Lapplicazione CarViewer.java 01: import javax.swing.JFrame; 02: 03: public class CarViewer 04: { 05: public static void main(String[] args) 06: { 07: JFrame frame = new JFrame(); 08: 09: final int FRAME_WIDTH = 300; 10: final int FRAME_HEIGHT = 400; 11: 12: frame.setSize(FRAME_WIDTH, FRAME_HEIGHT); 13: frame.setTitle("Two cars"); 14: frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Continua…

File CarViewer.java 15: 16: CarComponent component = new CarComponent(); 17: frame.add(component); 18: 19: frame.setVisible(true); 20: } 21: }

Domanda 8.Quale classe dobbiamo modificare per ottenere un disegno in cui le auto sono disposte una vicino allaltra?

Risposta 8. CarComponent

Altre forme grafiche Rectangle fasciaVerde = new Rectangle(100, 100, 30, 60); Rectangle fasciaRossa = new Rectangle(160, 100, 30, 60); Line2D.Double topLine = new Line2D.Double(130, 100, 160, 100); Line2D.Double bottomLine = new Line2D.Double(130, 160, 160, 160);

Lettura da un dialog box In una una applicazione grafica possiamo dare input mediante un JOptionPane Il metodo showInputDialog attiva una finestra che dà un prompt e attende input restituisce la stringa fornita dallutente Continua… String input = JOptionPane.showInputDialog("Enter x"); double x = Double.parseDouble(input);

Un dialog box

ColorViewer Una applicazione che permette allutente di comporre un colore decidendo i parametri del formato rgb I valori vengono richiesti in seguenza mediante dialog boxes Al termine lapplicazione attiva una finestra con un quadrato del colore composto dallutente

File ColorViewer.java 01: import java.awt.Color; 02: import javax.swing.JFrame; 03: import javax.swing.JOptionPane; 04: 05: class ColorViewer 06: { 07: public static void main(String[] args) 08: { 09: JFrame frame = new JFrame(); 10: 11: final int FRAME_WIDTH = 300; 12: final int FRAME_HEIGHT = 400; 13: 14: frame.setSize(FRAME_WIDTH, FRAME_HEIGHT); 15: frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 16: 17: String input; 18: Continua…

File ColorViewer.java 19: // Chiedi allutente I valori di red, green, blue 20: 21: input = JOptionPane.showInputDialog("red:"); 22: double red = Double.parseDouble(input); 23: 24: input = JOptionPane.showInputDialog("green:"); 25: double green = Double.parseDouble(input); 26: 27: input = JOptionPane.showInputDialog("blue:"); 28: double blue = Double.parseDouble(input); 29: 30: Color coloreScelto = new Color( 31: (float) red, (float) green, (float) blue); 32: ColorComponent component 33: = new ColorComponent(coloreScelto); 34: frame.add(component); 35: 36: frame.setVisible(true); 37: } 38: }

File ColorComponent.java 01: import java.awt.Color; 02: import java.awt.Graphics; 03: import java.awt.Graphics2D; 04: import java.awt.Rectangle; 05: import javax.swing.JComponent; 06: 07: /** 08: Una componente che include un quadrato colorato 09: */ 10: class ColorComponent extends JComponent 11: { private Color fillColor; // colore di riempimento 12: /** 13: Costruisce la componente c il colore di riempimento del quadrato 15: */ 16: public ColorComponent(Color c) Continua…

File ColorComponent.java 17: { 18: fillColor = c; 19: } 20: 21: public void paintComponent(Graphics g) 22: { 23: Graphics2D g2 = (Graphics2D) g; 24: 25: // Seleziona il colore del contesto grafico 26: 27: g2.setColor(fillColor); 28: 29: // Costruisci e colora un quadrato al centro 30: // della finestra 31: Continua…

File ColorComponent.java 32: final int LATO = 100; 33: 34: Rectangle quadrato = new Rectangle( 35: (getWidth() - LATO) / 2, 36: (getHeight() - LATO) / 2, 37: LATO, 38: LATO); 39: 40: g2.fill(quadrato); 41: } 43: }

Output

Domande 9.Sarebbe possibile chiedere i tre valori per r,g, e b in un unico dialog box? 10.Perché lapplicazione invoca showInputDialog dal metodo main main della classe ColorViewer e non dal metodo paintComponent della classe ColorComponent ?

Risposte 9.Certo, ma in quel caso è necessario estrarre poi le singole componenti … un utile esercizio di semplice su stringhe 10.Perchè in quel caso i dialog box verrebbero rilanciati tutte le volte che la finestra viene mossa / resized / deiconificata /…