NOTA! Questo sito utilizza i cookie e tecnologie simili.

Se non si modificano le impostazioni del browser, l'utente accetta. Per saperne di piu'

Approvo

Guida Java 2D - Capitolo 20: Il disegno avanzato in Java2D: il riempimento semplice, l'interfaccia Shape, forme geometriche.

 

Java2D mette a disposizione diverse classi ed interfacce per definire riempimenti e forme geometriche (sia vuote che ripiene).

 

Iniziamo con il riempimento semplice (vedremo il riempimento con gradienti e textures tra due capitoli): il riempimento può essere definito mediante l'interfaccia Paint e le classi che la implementano.

 

Una delle classi che implementa tale interfaccia è Color, il cui utilizzo è stato esaminato del capitolo 14 di questa guida e non verrà qui ripreso; le altre due classi sono GradientPaint e TexturePaint, che verranno prese in esame tra due capitoli.

 

 

 

Per definire forme geometriche, Java2D fornisce la classe Shape, i cui metodi principali sono elencati e descritti nella seguente tabella:

contains(double x, double y)   :   boolean Verifica se il punto di coordinata (x,y) è contenuto all'interno della forma geometrica (restituisce true in caso affermativo, false altrimenti).
contains(Point2D p)   :   boolean Analogo al precedente ma passando come parametro direttamente un oggetto Point2D (utile, ad esempio, se il Point2D può trovarsi in punti diversi in momenti diversi).
contains(double x, double y, double width, double height)   :   boolean Verifica se il rettangolo con vertice in alto a sinistra in (x,y), larghezza width ed altezza height è contenuto nella forma geometrica (restituisce true in caso affermativo, false altrimenti).
contains(Rectangle2D r)   :   boolean Analogo al precedente ma qui il rettangolo è identificato direttamente con un oggetto Rectangle2D (utile in caso di rotazioni o traslazioni del rettangolo nel corso dell'esecuzione del programma, ad esempio).

 

Classi 'native' di Java2D che implementano l'interfaccia Shape sono ad esempio:

  • Line2D;
  • Rectangle2D;
  • RoundRectangle2D;
  • Ellipse2D;
  • Arc2D;
  • Point2D;
  • QuadCurve2D;
  • CubicCurve2D;
  • GeneralPath;
  • Area.

Un elenco di costruttori, campi e metodi di tutte queste classi richiederebbe troppo spazio e, nella maggior parte dei casi, risulterebbe ripetitivo; si rimanda, quindi, alle API ufficiali.

 

Vediamo, invece, quali sono i metodi messi a disposizione da Graphics2D per impostare il riempimento, disegnare forme geometriche o impostare un clip di ritaglio (metodi da utilizzare all'interno di paintComponent):

setPaint(Paint p)   :   void Imposta il parametro p come tipo di riempimento (come vedremo, anche sfumato o gradiente) da adottare per il contesto grafico.
setClip(Shape s)   :   void Imposta la forma s passata come parametri come clip di ritglio.
draw(Shape s)   :   void Disegna la forma s passata come parametro senza riempimento (solo i contorni).
fill(Shape s)   :   void Disegna la forma s passata come parametro con riempimento.

 

Merita un'attenzione particolare la classe Area, che permette di combinare più forme geometriche, semplici e complesse.

 

Area ha due costruttori:

  • Area();
  • Area(Shape s); .

 

Metodi utili messi a disposizione da tale classe sono, ad esempio, i seguenti:

add(Area a)   :   void Aggiunge, all'Area che invoca il metodo, i punti appartenenti all'Area passata come parametro. Il risultato verrà 'depositato' nell'Area che invoca il metodo.
subtract(Area a)   :   void Rimuove, dai punti appartenenti all'Area che invoca il metodo, i punti appartenenti all'Area passata come parametro. Il risultato verrà 'depositato' nell'Area che invoca il metodo.
intersect(Area a)   :   void Effettua un'intersezione tra l'Area che invoca il metodo e quella passata come parametro. Il risultato verrà 'depositato' nell'Area che invoca il metodo.
exclusiveOr(Area a)   :   void Effettua uno XOR dei punti tra l'Area che invoca il metodo e quella passata come parametro. Il risultato verrà 'depositato' nell'Area che invoca il metodo.

 

 

 

 
Vai all'inizio della pagina