+ All Categories
Home > Education > Graphics Lezione1

Graphics Lezione1

Date post: 15-May-2015
Category:
Upload: silvano-natalizi-itis-alessandro-volta-perugia
View: 1,202 times
Download: 0 times
Share this document with a friend
Description:
programma per spiegare alcuni concetti di grafica in java
Popular Tags:
12
Lezione del 21 novembre 2008 per la classe IV A Liceo tecnico Prof. Silvano natalizi
Transcript
Page 1: Graphics Lezione1

Lezione del 21 novembre 2008 per la classe IV A Liceo tecnico

Prof. Silvano natalizi

Page 2: Graphics Lezione1

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

}

Page 3: Graphics Lezione1

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

}

Page 4: Graphics Lezione1

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

Page 5: Graphics Lezione1

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

Page 6: Graphics Lezione1

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.*;

Page 7: Graphics Lezione1

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

Page 8: Graphics Lezione1

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;

Page 9: Graphics Lezione1

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.

Page 10: Graphics Lezione1

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

Page 11: Graphics Lezione1

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

Page 12: Graphics Lezione1

Recommended