Creazione di nuovi colori

Come si è detto, in Java sono disponibili alcuni colori ``standard'':
           Color.black 
           Color.blue 
           Color.cyan 
           Color.darkGray 
           Color.gray 
           Color.green 
           Color.lightGray 
           Color.magenta 
           Color.orange 
           Color.pink 
           Color.red 
           Color.white 
           Color.yellow 
In alcuni casi semplici, questi colori possono essere sufficienti. D'altra parte, ci sono dei casi in cui occorrono altri colori oltre a questi. In Java, è possibile definire un colore attraverso le sue tre coordinate RGB.

Come è noto, ogni colore si può ottenre ``mischiando'' quantità opportune dei tre colori fondamentali rosso, verde e blu. Ogni colore è quindi determinato dalle quantità dei tre colori fondamentali che lo compongono. In Java, si assume che le componenti di colore variano da 0 a 255, per cui (0,0,0) è il nero, mentre (255,255,255) è il bianco. Per esempio, il colore rosso è composto da una componente rossa di massima intensità, e da nessun altro colore fondamentale, per cui il rosso è identificato dalla terna di coordinate (255,0,0).

Per creare un nuovo colore occorre una variabile di tipo Color, che è una zona di memoria in cui si memorizza un colore. Per decidere il colore da memorizzare in questa locazione si usa il comando:

  c = new Color(a,b,c);
dove a, b, c sono le coordinate di colore del nuovo colore da creare.

Vediamo ora un esempio di uso della allocazione di nuovi colori. Vogliamo disegnare dei quadrati colorati, ognuno di lato 20, disposti a griglia. Vogliamo che il quadrato in posizione (0,0) sia riempito del colore di coordinate (0,0,0), mentre quello di coordinate (20,0) abbia colore (20,0,0) e quello in posizione (0,10) sia colorato con (0,20,0), e così via: il quadrato in posizione (i,j) deve essere colorato con il colore (i,j,0).

Il programma NuoviColori.java disegna la griglia facendo un ciclo in cui la variabile i va da 0 a 250 aumentando ogni volta di 20. Per ogni valore di i occorre considerare tutti i valori di j da 0 a 250, per cui all'interno del ciclo for si mette un secondo ciclo for. Quello che si trova all'interno del secondo ciclo viene quindi eseguito per ogni valore di i e per ogni valore di j. Quello che si deve fare è creare un nuovo colore, dire che si vuole usare questo nuovo colore da ora in avanti, e disegnare il quadrato.

/*
  Allocazione di nuovi colori.
*/

import java.awt.*;

public class NuoviColori extends java.applet.Applet {
  public void paint(Graphics g) {
    int i,j;
    Color c;

    for(i=0; i<=250; i=i+20) {
      for(j=0; j<=250; j=j+20) {
        c=new Color(i,j,0);

        g.setColor(c);

        g.fillRect(i,j,20,20);
      }
    }
  }
}