Date post: | 15-May-2015 |
Category: |
Education |
Upload: | silvano-natalizi-itis-alessandro-volta-perugia |
View: | 1,202 times |
Download: | 0 times |
Lezione del 21 novembre 2008 per la classe IV A Liceo tecnico
Prof. Silvano natalizi
Procedura da seguire per disegnare oggetti graficipublic void paint(Graphics g) {
// Set pen parameters g.setColor(someColor); g.setFont(someLimitedFont); // Draw a shape g.drawString(...); g.drawLine(...) g.drawRect(...); // outline g.fillRect(...); // solid g.drawPolygon(...); // outline g.fillPolygon(...); // solid g.drawOval(...); // outline g.fillOval(...); // solid
}
Procedura da seguire per disegnare oggetti grafici 2Dpublic void paint(Graphics g) {
// Cast Graphics to Graphics2D Graphics2D g2d = (Graphics2D)g; // Setta i valori degli attributi dell’oggetto graficog2d.setPaint(fillColorOrPattern); g2d.setStroke(penThicknessOrPattern); g2d.setComposite(someAlphaComposite); g2d.setFont(anyFont); g2d.translate(...); g2d.rotate(...); g2d.scale(...); g2d.shear(...); g2d.setTransform(someAffineTransform); // Allocate a shape SomeShape s = new SomeShape(...); // Draw shape g2d.draw(s); //outlineG2d.fill(s); // solid
}
Che significa cast Graphics to Graphics2D
Graphics2D g2d = (Graphics2D)g;
( ) è l’operatore di castingQuesto operatore permette di convertire un
riferimento di un tipo ad un altro tipo purchè il nuovo tipo sia una sottoclasse del vecchio tipo
In questo caso convertiamo un oggetto della classe Graphics ad un oggetto della sua sottoclasse Graphics2D
Programma per ruotare un PoligonoScriviamo una applet che disegni un
poligonoe che permetta di ruotarlo con la pressione
del tasto del mouseRotazione antioraria con tasto sinistro del
mouseRotazione oraria con il tasto destro del mouse
Quali classi ci occorrono ?La classe RuotaPoligono ha come
componenti oggetti che si trovano nei pacchetti (package):
import java.awt.*;import java.awt.event.*;import java.applet.*;import java.util.*;import java.awt.geom.*;
Come si definisce la classe RotatePlygonpublic class RotatePolygon extends
Applet implements MouseListener {…}
extends perché eredita dalla classe Applet
implements perché implementa i metodi della classe (interfaccia) MouseListener
Creiamo un oggetto Poligono
private int[] xpoints = { 0,-10, -7, 7, 10 };
private int[] ypoints = {-10, -2, 10, 10, -2 };
//qui definiamo la forma da disegnare
private Polygon poly; int rotation = 0;
Inizializziamo la Applet
public void init() { //create the polygon poly = new
Polygon(xpoints, ypoints, xpoints.length);
//initialize the listeners addMouseListener(this);
}
Il listener è un orecchio che si mette in ascolto degli eventi che si attivano quando muoviamo il mouse.
Il metodo paint()
public void paint(Graphics g) { //create an instance of Graphics2D Graphics2D g2d = (Graphics2D) g;
//create a random number Random rand = new Random();
//save the window width/height int width = getSize().width; int height = getSize().height;
//fill the background with black g2d.setColor(Color.BLACK); g2d.fillRect(0, 0, width, height);
//move, rotate, and scale the shape randomly g2d.translate(width / 2, height / 2); g2d.scale(20, 20); g2d.rotate(Math.toRadians(rotation));
//draw the shape with a random color g2d.setColor(Color.RED); g2d.fill(poly); g2d.setColor(Color.BLUE); g2d.draw(poly); }
Elaborazione degli eventi del mouse //handle mouse events public void mouseEntered(MouseEvent m) { } public void mouseExited(MouseEvent m) { } public void mouseReleased(MouseEvent m) { } public void mouseClicked(MouseEvent m) { } public void mousePressed(MouseEvent m) { switch(m.getButton()) { case MouseEvent.BUTTON1: rotation--; if (rotation < 0) rotation = 359; repaint(); break; case MouseEvent.BUTTON3: rotation++; if (rotation > 360) rotation = 0; repaint(); break; } }}