Titel | Inhalt | Suchen | Index | DOC | Handbuch der Java-Programmierung, 5. Auflage |
<< | < | > | >> | API | Kapitel 25 - Farben |
Um Farben bei der Ausgabe von Grafik oder Schrift zu verwenden, muss 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 |
Das Programm arbeitet in der Weise, dass 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. |
|
Abbildung 25.1: Der Farbenkreis
Titel | Inhalt | Suchen | Index | DOC | Handbuch der Java-Programmierung, 5. Auflage, Addison Wesley, Version 5.0.2 |
<< | < | > | >> | API | © 1998, 2007 Guido Krüger & Thomas Stark, http://www.javabuch.de |