Successfully reported this slideshow.

Graphics Lezione1

1,375 views

Published on

programma per spiegare alcuni concetti di grafica in java

Published in: Education, Technology, Business
  • Be the first to comment

  • Be the first to like this

Graphics Lezione1

  1. 1. Lezione del 21 novembre 2008 per la classe IV A Liceo tecnico Prof. Silvano natalizi
  2. 2. Procedura da seguire per disegnare oggetti grafici <ul><li>public void paint(Graphics g) { </li></ul><ul><ul><ul><li>// Set pen parameters </li></ul></ul></ul><ul><ul><ul><li>g.setColor(someColor); g.setFont(someLimitedFont); </li></ul></ul></ul><ul><ul><ul><li>// Draw a shape </li></ul></ul></ul><ul><ul><ul><li>g.drawString(...); </li></ul></ul></ul><ul><ul><ul><li>g.drawLine(...) </li></ul></ul></ul><ul><ul><ul><li>g.drawRect(...); // outline </li></ul></ul></ul><ul><ul><ul><li>g.fillRect(...); // solid </li></ul></ul></ul><ul><ul><ul><li>g.drawPolygon(...); // outline </li></ul></ul></ul><ul><ul><ul><li>g.fillPolygon(...); // solid </li></ul></ul></ul><ul><ul><ul><li>g.drawOval(...); // outline </li></ul></ul></ul><ul><ul><ul><li>g.fillOval(...); // solid </li></ul></ul></ul><ul><li>} </li></ul>
  3. 3. Procedura da seguire per disegnare oggetti grafici 2D <ul><li>public void paint(Graphics g) { </li></ul><ul><ul><li>// Cast Graphics to Graphics2D </li></ul></ul><ul><ul><li>Graphics2D g2d = (Graphics2D)g; </li></ul></ul><ul><ul><li>// Setta i valori degli attributi dell’oggetto grafico </li></ul></ul><ul><ul><li>g2d.setPaint(fillColorOrPattern); </li></ul></ul><ul><ul><li>g2d.setStroke(penThicknessOrPattern); g2d.setComposite(someAlphaComposite); </li></ul></ul><ul><ul><li>g2d.setFont(anyFont); </li></ul></ul><ul><ul><li>g2d.translate(...); </li></ul></ul><ul><ul><li>g2d.rotate(...); </li></ul></ul><ul><ul><li>g2d.scale(...); </li></ul></ul><ul><ul><li>g2d.shear(...); </li></ul></ul><ul><ul><li>g2d.setTransform(someAffineTransform); </li></ul></ul><ul><ul><li>// Allocate a shape </li></ul></ul><ul><ul><li>SomeShape s = new SomeShape (...); </li></ul></ul><ul><ul><li>// Draw shape </li></ul></ul><ul><ul><li>g2d.draw(s); //outline </li></ul></ul><ul><ul><li>G2d.fill(s); // solid </li></ul></ul><ul><li>} </li></ul>
  4. 4. Che significa cast Graphics to Graphics2D <ul><ul><li>Graphics2D g2d = (Graphics2D)g; </li></ul></ul><ul><ul><li>( ) è l’operatore di casting </li></ul></ul><ul><ul><li>Questo operatore permette di convertire un riferimento di un tipo ad un altro tipo purchè il nuovo tipo sia una sottoclasse del vecchio tipo </li></ul></ul><ul><ul><li>In questo caso convertiamo un oggetto della classe Graphics ad un oggetto della sua sottoclasse Graphics2D </li></ul></ul>
  5. 5. Programma per ruotare un Poligono <ul><li>Scriviamo una applet che disegni un poligono </li></ul><ul><li>e che permetta di ruotarlo con la pressione del tasto del mouse </li></ul><ul><ul><li>Rotazione antioraria con tasto sinistro del mouse </li></ul></ul><ul><ul><li>Rotazione oraria con il tasto destro del mouse </li></ul></ul>
  6. 6. Quali classi ci occorrono ? <ul><li>La classe RuotaPoligono ha come componenti oggetti che si trovano nei pacchetti (package): </li></ul><ul><ul><li>import java.awt.*; </li></ul></ul><ul><ul><li>import java.awt.event.*; </li></ul></ul><ul><ul><li>import java.applet.*; </li></ul></ul><ul><ul><li>import java.util.*; </li></ul></ul><ul><ul><li>import java.awt.geom.*; </li></ul></ul>
  7. 7. Come si definisce la classe RotatePlygon <ul><li>public class RotatePolygon extends Applet implements MouseListener {…} </li></ul><ul><li>extends perché eredita dalla classe Applet </li></ul><ul><li>implements perché implementa i metodi della classe (interfaccia) MouseListener </li></ul>
  8. 8. Creiamo un oggetto Poligono <ul><li>private int[] xpoints = { 0,-10, -7, 7, 10 }; </li></ul><ul><li>private int[] ypoints = {-10, -2, 10, 10, -2 }; </li></ul><ul><li>//qui definiamo la forma da disegnare </li></ul><ul><li>private Polygon poly; </li></ul><ul><li>int rotation = 0; </li></ul>
  9. 9. Inizializziamo la Applet <ul><li>public void init() { </li></ul><ul><li>//create the polygon </li></ul><ul><li>poly = new Polygon(xpoints, ypoints, xpoints.length); </li></ul><ul><li>//initialize the listeners </li></ul><ul><li>addMouseListener(this); </li></ul><ul><li>} </li></ul><ul><li>Il listener è un orecchio che si mette in ascolto degli eventi che si attivano quando muoviamo il mouse. </li></ul>
  10. 10. 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); }
  11. 11. 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; } } }

×