graphics lezione1

Post on 15-May-2015

1.202 Views

Category:

Education

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

programma per spiegare alcuni concetti di grafica in java

TRANSCRIPT

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; } }}

top related