Weitere aktuelle Java-Titel finden Sie bei dpunkt.
 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index


12.6

Farben und Farbmodelle


Für die Darstellung von Farben besitzt Java die Klasse Color. Jedes Exemplar dieser Klasse repräsentiert eine Farbe. Für oft gebrauchte Farben werden in dieser Klasse Konstanten definiert.

Tabelle 12.3: Farbkonstanten
Color.blackColor.blueColor.cyan
Color.darkgrayColor.grayColor.green
Color.lightgrayColor.magentaColor.orange
Color.pinkColor.redColor.white
Color.yellow  

Um Farben zu erzeugen, die nicht durch diese Konstanten abgedeckt werden, muss ein Exemplar von Color erzeugt werden. Die Spezifizierung der Farben erfolgt nach dem RGB-Modell. Dies kann auf folgende Arten geschehen:

Ist ein Exemplar von Color erzeugt, kann es bestimmten Objekten zugewiesen werden, z. B. mit setColor(), setForeground(), setBackground() usw. Color besitzt die Methoden brighter() und darker(). Ruft man eine dieser Methoden eines Color-Objekts auf, wird als Ergebnis ein Color-Objekt geliefert, das eine hellere bzw. eine dunklere Farbe als das Original repräsentiert. Die Darstellung einer Farbe erfolgt intern als 4-Byte-int-Wert. Sie besteht aus je einem Byte Alpha-, Rot-, Grün- und Blauanteil. Der Alphawert enthält die Deckungskraft der Farbe.

Abbildung 12.5: Der Aufbau einer Farbe im Standard-RGB-Modell
Abbildung 12.5

Wird wie in den folgenden Abschnitten direkt mit solchen Farben gearbeitet, bietet sich die hexadezimale Schreibweise an. Die Farbe Color.black wird intern als

  0xFF000000
dargestellt. Die Farbe
  0xFF102030
ist anders zusammengesetzt. Ihre Deckung ist maximal (0xFF), der Blauanteil beträgt 48 (0x30), der Grünanteil 32 (0x20), und der Rotanteil hat den Wert 16 (0x10). Die einzelnen Werte wurden aus dem int-Wert extrahiert und in das Dezimalsystem umgerechnet. Diese Darstellung bezieht sich allerdings nur auf das Standard-RGB-Modell, nicht auf eigene Farbmodelle (siehe unten). Das Standard-RGB-Modell wird von allen Interfaces des Pakets java.awt.image verwendet (ImageProducer, ImageConsumer und ImageObserver). Die Klasse Color definiert des weiteren statische Methoden, die zur Konvertierung von Farben in das HSB-Modell eingesetzt werden können. Im HSB-Modell wird eine Farbe durch die Werte von Grundton, Farbsättigung und Helligkeit spezifiziert. Diese drei Attribute werden durch einen float-Wert zwischen 0 und 1 angegeben. Um ein Color-Objekt mit Werten im HSB-Modell zu erzeugen, muss man die Methode
public static Color getHSBColor(float h, float s, float b)
verwenden. getHSBColor() ist eine statische Methode, die in der Klasse Color definiert ist. Sie liefert als Ergebnis ein Color-Objekt, das nach den übergebenen Werten im HSB-Modell komponiert wird. Zur Konvertierung von Farbwerten vom HSB-Modell in das RGB-Modell und umgekehrt stehen dem Benutzer die Methoden HSBtoRGB(float, float, float) bzw. RGBtoHSB(int, int, int, float[]) zur Verfügung.

Ein Exemplar des RGB-Modells erhält man durch Aufruf der Methode ColorModel.getRGBdefault(). Diese Methode kann ohne ein vorhandenes Exemplar aufgerufen werden, da sie static ist.

Die Klasse ColorModel repräsentiert in Java ein Farbmodell. ColorModel besitzt neben der Methode getRGBdefault() weitere Methoden, welche die einzelnen Farbanteile eines Farbwertes liefern: Von ColorModel können keine Exemplare erzeugt werden, da die Klasse abstrakt ist. Will man ein eigenes Farbmodell anlegen, muss man ColorModel überschreiben. Die Verteilung der einzelnen Farbanteile auf einen Farbwert kann somit beliebig festgelegt werden.

Dem Konstruktor von ColorModel wird die Anzahl der Bits übergeben, die für die Darstellung einer Farbe benötigt werden. Die obigen Methoden müssen so implementiert werden, dass sie die dem Farbmodell entsprechenden Farbanteile liefern. Die Verwendung eines eigenen Farbmodells in Verbindung mit der Klasse MemoryImageSource wird im nächsten Abschnitt erklärt. Zwei von ColorModel abgeleitete Klassen existieren bereits seit JDK 1.0: Mit[1.2] dem JDK 1.2 wurden zusätzlich die Klassen PackedColorModel und ComponentColorModel eingeführt, die in Verbindung mit dem neuen Grafikmodell genutzt werden. Da dieses Buch den Aufbau des neuen Grafikmodells aus Platzgründen nicht behandelt, wird an dieser Stelle jedoch auf eine detaillierte Beschreibung verzichtet und auf die Referenz verwiesen.


 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index

Copyright © 2002 dpunkt.Verlag, Heidelberg. Alle Rechte vorbehalten.