16.11.2013 Aufrufe

Programmieren in Java - HostFiXX.de

Programmieren in Java - HostFiXX.de

Programmieren in Java - HostFiXX.de

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>Programmieren</strong> <strong>in</strong> <strong>Java</strong><br />

Abb.: Die Klasse Color<br />

Farbübergänge<br />

<strong>Java</strong> 2D erlaubt die Verwendung von Farbübergängen (Gradienten) und Mustern zur<br />

Füllung beliebiger Formen. Dazu existieren zwei Klassen, die die Schnittstelle Pa<strong>in</strong>t<br />

implementieren:<br />

- GradientPa<strong>in</strong>t (repäsentiert e<strong>in</strong>en glatten Übergang von e<strong>in</strong>er Farbe zu e<strong>in</strong>er an<strong>de</strong>ren)<br />

- TexturePa<strong>in</strong>t für Füllmuster auf <strong>de</strong>r Basis e<strong>in</strong>er Bilddatei, die das Muster vorgibt.<br />

public class GradientPa<strong>in</strong>t extends Object implements Pa<strong>in</strong>t<br />

Konstruktoren.<br />

public GradientPa<strong>in</strong>t(float x1,float y1,Color c1,float x2,float y2,Color c2)<br />

public GradientPa<strong>in</strong>t(float x1,float y1,Color c1,float x2,float y2,<br />

Color c2,boolean cyclic)<br />

// c1 ist die Farbe am ersten Punkt(x1,y1), c2 ist die Farbe am zweiten Punkt (x2,y2). cyclic ist true,<br />

// falls <strong>de</strong>r Übergang zwischen <strong>de</strong>n Farben wie<strong>de</strong>rholt wer<strong>de</strong>n soll<br />

Der aktuelle Gradient wird über setPa<strong>in</strong>t() <strong>de</strong>s Graphics2D-Kontextes gesetzt.<br />

Bsp. 263 : E<strong>in</strong> Kreis wird mit e<strong>in</strong>em Farbübergang ausgestattet.<br />

import java.awt.*;<br />

import java.awt.event.*;<br />

import java.awt.geom.*;<br />

public class GradientPa<strong>in</strong>tBsp extends JPanel<br />

{<br />

private Ellipse2D.Double kreis<br />

= new Ellipse2D.Double(10,10,350,350);<br />

private GradientPa<strong>in</strong>t gradient<br />

= new GradientPa<strong>in</strong>t(0,0,Color.red,175,175,Color.yellow,true);<br />

public void pa<strong>in</strong>tComponent(Graphics g)<br />

{<br />

clear(g);<br />

Graphics2D g2d = (Graphics2D) g;<br />

g2d.setPa<strong>in</strong>t(gradient);<br />

g2d.fill(getCircle());<br />

g2d.setPa<strong>in</strong>t(Color.black);<br />

g2d.draw(getCircle());<br />

}<br />

protected void clear(Graphics g)<br />

{<br />

super.pa<strong>in</strong>tComponent(g);<br />

// loescht die Pixelmap <strong>de</strong>s Bildschirms<br />

// per Default gibt es Double Buffer<strong>in</strong>g<br />

}<br />

protected Ellipse2D.Double getCircle()<br />

{<br />

return (kreis);<br />

}<br />

public static void ma<strong>in</strong>(Str<strong>in</strong>g[] args)<br />

{<br />

GradientPa<strong>in</strong>tBsp gbsp = new GradientPa<strong>in</strong>tBsp();<br />

Str<strong>in</strong>g titel = gbsp.getClass().toStr<strong>in</strong>g();<br />

if (titel.<strong>in</strong><strong>de</strong>xOf("class") != -1)<br />

263 pr43100<br />

302

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!