Guida alla programmazione delle GUI, interfacce grafiche in Java 2D - 19: il tratto con Stroke e BasicStroke
Capitolo 19: Il disegno avanzato in Java2D: il tratto con Stroke e BasicStroke.
L'interfaccia Stroke e le classi che la implementano ci permettono di impostare diversi stili di pennello.
Attualmente, una sola classe di Java2D implementa, in maniera nativa, Stroke: la classe BasicStroke.
Costruttori di BasicStroke:
- BasicStroke();
- BasicStroke(float width);
- BasicStroke(float width, int cap, int join);
- BasicStroke(float width, int cap, int join, float miterlimit);
- BasicStroke(float width, int cap, int join, float miterlimit, float[] dash, float dash_phase);
La tabella riportata qui sotto descrive i vari parametri utilizzati dai costruttori:
| width |
Lo spessore del tratto, espresso mediante valori float. Deve avere valore maggiore o uguale a 0.0f. |
| cap |
Definisce che aspetto dare alle estremità di un segmento. I possibili valori sono espressi mediante costanti predefinite di BasicStroke e possono essere: CAP_BUTT, CAP_ROUND o CAP_SQUARE. |
| join |
Definisce che aspetto dare al punto di incontro di due segmenti, qualora se ne presenti l'occasione. I possibili valori sono espressi mediante costanti predefinite di BasicStroke e possono essere: JOIN_ROUND, JOIN_BEVEL o JOIN_MITER. |
| miterlimit |
Il limite da utilizzare per 'tagliare' (trim) un join di tipo miter (JOIN_MITER). Deve avere valore maggiore di 1. |
| dash |
Array di valori che rappresentano il pattern dei punti. |
| dash_phase |
Indica un offset a partire dal quale iniziare a disegnare il pattern dei punti. |
Per impostare lo stile del pennello per il contesto grafico, utilizzare il metodo di Graphics2D:
setStroke(Stroke s) : void
dove il parametro s identifica, appunto, un oggetto di tipo Stroke.
Per scoprire qual è lo stile attualmente in uso dal contesto grafico, possiamo utilizzare il metodo di Graphics2D:
getStroke() : abstract Stroke
che restituisce, appunto, uno Stroke.
Esempio di definizione ed utilizzo di un BasicStroke:
private BasicStroke s = new BasicStroke(5.0f);
// ...
public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
// ...
g2.setStroke(s);
// ...
}
|