Titel | Inhalt | Suchen | Index | DOC | Handbuch der Java-Programmierung, 7. Auflage |
<< | < | > | >> | API | Kapitel 26 - 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 /* Listing2601.java */ 002 003 import java.awt.*; 004 005 public class Listing2601 006 extends Frame 007 { 008 public static void main(String[] args) 009 { 010 Listing2601 wnd = new Listing2601(); 011 } 012 013 public Listing2601() 014 { 015 super("Der Farbenkreis"); 016 addWindowListener(new WindowClosingAdapter(true)); 017 setSize(300,200); 018 setVisible(true); 019 } 020 021 public void paint(Graphics g) 022 { 023 int top = getInsets().top; 024 int left = getInsets().left; 025 int maxX = getSize().width-left-getInsets().right; 026 int maxY = getSize().height-top-getInsets().bottom; 027 Color col; 028 int[] arx = {130,160,190}; 029 int[] ary = {60,110,60}; 030 int[] arr = {50,50,50}; 031 int[] arcol = {0,0,0}; 032 boolean paintit; 033 int dx, dy; 034 035 for (int y = 0; y < maxY; ++y) { 036 for (int x = 0; x < maxX; ++x) { 037 paintit = false; 038 for (int i = 0; i < arcol.length; ++i) { 039 dx = x - arx[i]; 040 dy = y - ary[i]; 041 arcol[i] = 0; 042 if ((dx*dx+dy*dy) <= arr[i]*arr[i]) { 043 arcol[i] = 255; 044 paintit = true; 045 } 046 } 047 if (paintit) { 048 col = new Color(arcol[0],arcol[1],arcol[2]); 049 g.setColor(col); 050 g.drawLine(x+left,y+top,x+left+1,y+top+1); 051 } 052 } 053 } 054 } 055 } |
Listing2601.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 26.1: Der Farbenkreis
Titel | Inhalt | Suchen | Index | DOC | Handbuch der Java-Programmierung, 7. Auflage, Addison Wesley, Version 7.0 |
<< | < | > | >> | API | © 1998, 2011 Guido Krüger & Heiko Hansen, http://www.javabuch.de |