pip11.gif (3015 bytes)

Disegnare

L'origine di ogni finestra è nell'angolo superiore sinistro, nella posizione (0,0):

schermo.gif (1705 bytes)

L'unità di misura è il pixel, le coordinate sono degli int.

Ogni forma disegnata può essere costituita dal perimetro oppure può essere piena. Gli oggetti vengono disegnati e riempiti col colore selezionato in quel momento; il colore di defaultè il nero.

Linee:

Le linee vengono tracciate con il metodo drawLine()

drawLine(x1, y1, x2, y2);

traccia un segmento di retta dal punto (x1, y1) al punto (x2, y2).

Rettangoli:

I metodi drawRect() e fillRect() visualizzano un rettangolo rispettivamente vuoto o pieno. Un rettangolo è specificato dalle coordinate del suo vertice superiore sinistro , dalla sua larghezza (width) e dalla sua altezza (height):

rect.gif (1180 bytes)

 

quindi la sintassi per tracciare un tale rettangolo è

drawRect(a, b, w, h)  (risp. fillRect(a, b, w, h))

Come al solito a, b, w, h sono degli int. Ovviamente per disegnare un quadrato basta prendere w = h.

Ellissi e cerchi:

Per disegnare (risp. riempire) un'ellisse si usa drawOval() (risp. fillOval()):

drawOval(a, b, w, h);

L'ellisse viene disegnata all'interno di un rettangolo il cui vertice superiore sinistro è (a, b), la cui largheza è w e la cui altezza è h. Per tracciare un cerchio basta specificare un quadrato (w = h). Stesse indicazioni per fillOval().

Archi:

Gli archi si disegnano con drawArc() (risp. fillArc()):

drawArc(x, y, w, h, a1, a2);

L'arco è limitato dal rettangolo il cui vertice superiore sinistro è (x, y), la cui larghezza è w e la cui altezza è h. L'arco viene tracciato dall'angolo d'inizio a1 lungo la distanza angolare specificata dall'angolo a2. Gli angoli sono espressi in gradi (0 gradi sulla linea orizzontale). L'arco viene tracciato in senso antiorario se a2 è positivo, in senso orario se a2 è negativo. Per esempio, per disegnare un arco dalle ore 12:00 alle 6:00 si prende a1 = 90, a2 = 180.

Poligoni:

E' possibile disegnare (o riempire) forme poligonali arbitrarie con drawPolygon() (risp. fillPolygon()):

drawPolygon(x[ ], y[ ], pti);

dove x[ ] è un array contenente tutte le prime coordinate dei vertici del poligono, y[ ] è un array contenente tutte le seconde coordinate dei vertici del poligono e dove pti è il numero di punti. Gli elementi di x[ ], y[ ] e pti sono degli int.

Esempio:

import java.applet.*;
import java.awt.*;

public class Cubi extends Applet {
   
int xpol1[]={25, 75, 75, 25, 25};
int ypol1[] = {100, 100, 350, 350, 100};
int pt1 = 5;
int xpol2[]={75, 125, 125, 255, 255, 75, 75};
int ypol2[]={350, 325, 300, 260, 148, 100, 350};
int pt2 = 7;
int xpol3[]={125, 300, 300, 125, 125};
int ypol3[]={300, 300, 350, 350, 300};
int pt3 = 5;
int xpol4[]={125, 275, 375, 300, 125};
int ypol4[]={300, 250, 250, 300, 300};
int pt4 = 5;
int xpol5[]={300, 375, 375, 300, 300};
int ypol5[]={300, 250, 275, 350, 300};
int pt5 = 5;

public void init(){
    setBackground(Color.cyan);
}
public void paint(Graphics g){
    g.setColor(Color.blue);
    g.fillPolygon(xpol1, ypol1, pt1);
    g.setColor(Color.red);
    g.fillPolygon(xpol3, ypol3, pt3);
    g.setColor(Color.yellow);
    g.fillPolygon(xpol2, ypol2, pt2);
    g.setColor(Color.orange);
    g.fillPolygon(xpol4, ypol4, pt4);
    g.fillPolygon(xpol5, ypol5, pt5);
}
}

dà il seguente risultato:

avanti02.gif (9574 bytes)fleche_retour.gif (1377 bytes)