Titel | Inhalt | Suchen | Index | DOC | Handbuch der Java-Programmierung, 3. Auflage
<< | < | > | >> | API | Kapitel 25 - Farben

## 25.3 Verwenden von Farben

- 25.3 Verwenden von Farben

Um Farben bei der Ausgabe von Grafik oder Schrift zu verwenden, muß ein geeignetes `Color`-Objekt beschafft und dem `Graphics`-Objekt mit Hilfe der Methode `setColor` zugewiesen werden. Die Ausgaben erfolgen dann so lange in der neuen Farbe, bis durch Aufruf von `setColor` eine andere Farbe festgelegt wird. Mit Hilfe der Methode `getColor` kann die aktuelle Farbe ermittelt werden:

    public void setColor(Color c)

    public Color getColor()
| java.awt.Graphics

Das folgende Beispiel zeigt die Verwendung von Farben und ihre Zusammensetzung aus den drei Grundfarben Rot, Grün und Blau. Es stellt das Prinzip der additiven Farbmischung mit Hilfe dreier überlappender Kreise dar:

    001 /* Listing2501.java */
    002
    003 import java.awt.*;
    004 import java.awt.event.*;
    005
    006 public class Listing2501
    007 extends Frame
    008 {
    009   public static void main(String[] args)
    010   {
    011     Listing2501 wnd = new Listing2501();
    012   }
    013
    014   public Listing2501()
    015   {
    016     super("Der Farbenkreis");
    017     addWindowListener(new WindowClosingAdapter(true));
    018     setSize(300,200);
    019     setVisible(true);
    020   }
    021
    022   public void paint(Graphics g)
    023   {
    024     int top  = getInsets().top;
    025     int left = getInsets().left;
    026     int maxX = getSize().width-left-getInsets().right;
    027     int maxY = getSize().height-top-getInsets().bottom;
    028     Color col;
    029     int[] arx   = {130,160,190};
    030     int[] ary   = {60,110,60};
    031     int[] arr   = {50,50,50};
    032     int[] arcol = {0,0,0};
    033     boolean paintit;
    034     int dx, dy;
    035
    036     for (int y = 0; y < maxY; ++y) {
    037       for (int x = 0; x < maxX; ++x) {
    038         paintit = false;
    039         for (int i = 0; i < arcol.length; ++i) {
    040           dx = x - arx[i];
    041           dy = y - ary[i];
    042           arcol[i] = 0;
    043           if ((dx*dx+dy*dy) <= arr[i]*arr[i]) {
    044             arcol[i] = 255;
    045             paintit = true;
    046           }
    047         }
    048         if (paintit) {
    049           col = new Color(arcol[0],arcol[1],arcol[2]);
    050           g.setColor(col);
    051           g.drawLine(x+left,y+top,x+left+1,y+top+1);
    052         }
    053       }
    054     }
    055   }
    056 }
| Listing2501.java

Listing 25.1: Darstellung des Farbenkreises

|  | Das Programm arbeitet in der Weise, daß für jeden einzelnen Punkt der Zeichenfläche berechnet wird, ob dieser in einem der drei Kreise liegt. Ist dies der Fall, so wird die zugehörige Farbkomponente auf 255 gesetzt, andernfalls auf 0. Die Bestimmung der Kreiszugehörigkeit erfolgt mit Hilfe des Satzes von Pythagoras, nach dem ein Punkt genau dann zu einem Kreis gehört, wenn die Summe der Quadrate der Abstände vom `x`- und `y`-Wert zum Mittelpunkt kleiner gleich dem Quadrat des Radius ist. Die drei Mittelpunkte werden in unserem Beispiel in den Arrays `arx` und `ary`, die Radien der Kreise in `arr` gespeichert. Die boolesche Variable `paintit` zeigt an, ob der Punkt in wenigstens einem der drei Kreise liegt und daher überhaupt eine Ausgabe erforderlich ist. |  |
Hinweis

Abbildung 25.1: Der Farbenkreis

Titel | Inhalt | Suchen | Index | DOC | Handbuch der Java-Programmierung, 3. Auflage, Addison Wesley, Version 3.0
<< | < | > | >> | API | © 1998-2002 Guido Krüger, http://www.javabuch.de