Farbverläufe sind ästhetisch ansprechende Übergänge zwischen den Farben. Java automatisch verarbeitet verschiedene Arten von Gradienten zwischen Benutzer angegebenen Farben. Sie können einen Farbverlauf als eine Farbe gesetzt beim Zeichnen in Java , um Formen , Text und andere Objekte mit einem Farbverlauf zu erstellen. Wenn die Standard- Java -Klassen Gradienten nicht flexibel genug sind , können Sie Ihre eigenen Gradienten in Java verarbeiten mit verschachtelten Schleifen . GradientPaint Klasse
GradientPaint Klasse stellt die einfachste Methode zum Erstellen einer einfachen Steigung. GradientPaint Konstruktor akzeptiert zwei Punkte, zwei Farben und ein optionales boolean Wert . Die resultierende Gradient von der ersten Farbe am ersten Punkt zu verschieben, um die zweite Farbe an der zweiten Stelle . Wenn Sie den booleschen Wert true übergeben, wird die Steigung des Gradienten in beiden Richtungen über die Start-und Endpunkte zu wiederholen , die Schaffung eines zyklischen Muster . Ein Objekt, das GradientPaint Zyklen durch blau und weiß als solcher instanziiert :
GradientPaint p = new GradientPaint ( new Point (0,0), Color.Blue , new Point ( 100,100 ) , Color.White , true) ;
LinearGradientPaint Klasse
LinearGradientPaint ähnelt GradientPaint , aber es kann einen Gradienten durch mehr als zwei Farben zu erstellen und es erlaubt den Benutzern , wie weit jedes farbige Abschnitt definieren die Steigung sollte . LinearGradientPaint Konstruktor akzeptiert zwei Punkte , eine Reihe von Schwimmern, eine Reihe von Farben und ein optionaler Wert , um anzuzeigen, wie die Steigung sollte Zyklus durch Farben. Jeder Schwimmer Wert entspricht einer Farbe und zeigt , an welcher Stelle in der Steigung , die Farbe sollte überwiegen. Zum Beispiel sollte , wenn der Gradient sollte blau ein Drittel der Weg durch seinen Zyklus 0,3 f mit der Farbe Blau entsprechen . Ein Objekt, das eine LinearGradientPaint Gradienten über Blau, Schwarz und Weiß schafft ohne Wiederholung verwendet die folgenden Konstruktor :
float [ ] x = { 0.0f, 0.3f , 1.0f }; Farbe [ ] c = {Color . SCHWARZ, color.Blue , Color.White }; LinearGradientPaint lp = new LinearGradientPaint ( new Point (0,0), new Point ( 100,100 ) , x , c);
RadialGradientPaint Klasse
RadialGradientPaint schafft kreisförmig verlaufenden Gradienten aus einem einzigen Punkt. Der Konstruktor nimmt einen einzelnen Punkt, der die Mitte des Kreises , ein Wert, der die Schwimmer Radius des Kreises , eine Reihe von Schwimmern , die Rate der Wechsel zwischen Farben und einer Reihe von Farben darstellen . Optional kann es zu akzeptieren einen Brennpunkt , der die Mitte des Gradienten verschiebt bis elliptisch Gradienten und einen Wert , wie die Steigung durchläuft Farben bestimmen zu erstellen. Instanziieren eines RadialGradientPaint Objekt ist ähnlich dem Erstellen eines LinearPaintObject :
float [ ] x = { 0.0f, 0.3f , 1.0f }; Farbe [ ] c = { Color.black , Color.Blue , Color.White }; LinearGradientPaint lp = new LinearGradientPaint ( new Point ( 50,50 ) , (float ) 25, x , c);
Malerei ein Gradient
Sie können aufwendiger gestaltet Gradienten in Java durch die Verarbeitung Ihrer eigenen Gradienten durch verschachtelte Schleifen . Bei jedem Schritt in der Schleife , erstellen Sie eine neue Farbe auf Ihre Position in der Schleife basiert. In der innersten Schleife , zeichnen Sie ein Quadrat an einer Position von Ihrer Position in der Schleife in der aktuellen Farbe definiert. Der Code in dem Beispiel unten wird eine Steigung Rechteck, das an der Stelle (0,0) beginnt und 400 Pixel breit und 500 Pixel hoch . Die Float-Werte r1, g1 und b1 definieren die R-, G und B-Werte der ursprünglichen Farbe. Die Werte R2 , G2 und B2 definiert die R-, G-und B -Werte für die zweite Farbe . Die erste Schleife läuft von der anfänglichen x der Breite des Rechtecks zu koordinieren. Die innere Schleife wird von der ersten y-Koordinate der Höhe des Rechtecks. So wird in der inneren Schleife wird der Punkt ( i , j) entspricht immer einem anderen Punkt in dem Gradienten Rechteck. Jedes Mal, wenn das Programm durchläuft die verschachtelte Schleife , die es r und b-Werte als ein Bruchteil der aktuellen x-Koordinate ändert ; je näher der Punkt ist, auf den Anfangswert x-Wert , je näher die R-und B -Werte auf ihre ursprünglichen Werte . Das Programm modifiziert die b-Wert bezogen auf die aktuelle y-Koordinate , wodurch die gleiche Wirkung auf einer anderen Achse . Es erstellt dann eine neue Farbe aus der modifizierten r, g und b-Werte , und zeichnet ein Rechteck von genau einem Pixel in der Breite und Höhe an das aktuelle Koordinatensystem in der neuen Farbe
int x = 0; . Int y = 0; int width = 400 ; int height = 500; float r1 = 0; float g1 = 0; float b1 = 1; float r2 = 1; float g2 = 1; float b2 = 0; float rS = Math.abs ( r2 -r1 ); float gS = Math.abs (g2 - g1) ; float bs = Math.abs (b2 -b1 ); for (int i = x; i < Breite ; i + +) {for (int j = y , j < Höhe; j + +) {float r , g, b; if ( r1 < r2) { r = ((( rS) /Breite) * i) + r1 } else { r = ( r1- ( (RS ) /Breite) * i); } if ( g1 < g2) { g = (( (GS) /Breite) * i) + g1 ; } else { g = (g1 -(( gS ) /Breite) * i) ; } if ( b1 < r2) {b = (( (BS) /Breite) * i) + b1 ; } else { b = (b1 -(( bS) /Breite) * i) ;} Farbe c = new Color (r, g , b, (float) 0.5) ; g2d.setColor (c); g2d.fillRect (i, j , 1, 1 );}}