next up previous contents
Nächste Seite: Systemuhrzeit in einem Applet Aufwärts: Animationen Vorherige Seite: Animationen   Inhalt

Farben darstellen

import java.awt.*;

public class Anzeige extends Frame implements Runnable {

    Thread proz;
    Color farben [] = new Color[100];
    Font schrift = new Font("Sans", Font.BOLD, 13);
    String aktuellefarbe;

    Anzeige () {
        proz = new Thread (this, "Farben");
        proz.start();
    }

    public void run() {
        float farbton = 0;
        for (int i = 0; i < farben.length; i++) {
            farben[i] = Color.getHSBColor(farbton, (float) 1.0, (float) 1.0);
            farbton += 0.01;      // farbton ändert sich von 0.0 bis 1.0
                                  // sättigung konstant 1.0
                                  // helligkeit konstant 1.0
        }

        int i = 0;
        Thread dieserproz = Thread.currentThread();
        while (proz == dieserproz) {
            setForeground(farben[i]);
            aktuellefarbe = i + " " + farben[i];

            try {
                Thread.sleep(1000);
            }
            catch (InterruptedException ie) {
            }

            repaint();
            i++;
            if (i == farben.length) i=0;
        }
    }

    public void paint (Graphics bs) {
        bs.fillRect(20,50, 260,80);
        bs.setColor(Color.black);
        bs.setFont(schrift);
        bs.drawString(aktuellefarbe, 20,40);
    }

    public static void main (String [] args) {
        Anzeige proggi = new Anzeige();
        proggi.setLocation(100,100);
        proggi.setSize(300,150);
        proggi.setTitle("Threads verwenden");
        proggi.setVisible(true);
    }
}

Zunächst wird ein Array mit 100 verschiedenen Farbwerten gefüllt, wobei für diese Farben der so genannte Farbton im ``HSB-Farbmodell (hue, saturation, brightness) in Hundertstelschritten zwischen 0 und 1 variiert wird. Anschließend wird aus diesem Array inkrementiell ein Wert ausgewählt, die Vordergrundfarbe gesetzt, das entsprechend eingefärbte Rechteck und der zugehörige Farbwert in RGB-Werten ausgegeben.


\includegraphics[width=5.5cm]{ThAnzeige.ps}



Alfred Nussbaumer 2003-02-10