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

Java 2D - 20: disegno avanzato: riempimento; Shape, forme

Guida Java 2D, corso di base 

 

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.

 

 

 

 

Per un elenco completo (lista) dei tutorial e videotutorial su Java, Java 2D, Java 3D e J2ME, clicca qui


 
Libri e eBook sul linguaggio di programmazione Java:
 
 
ebook PDF "Java 3D: guida di base" di Francesco Milanese
 
 
 
 
 

 

Pagina di Francesco Milanese (redbaron85) su Facebook   Pagina di Francesco Milanese (redbaron85) su Google Plus   Profilo di Francesco Milanese (redbaron85) su LinkedIn   Pagina di Francesco Milanese (redbaron85) su Twitter   Canale Youtube di Francesco Milanese (redbaron85ct)

Vai all'inizio della pagina