Farbverlauf in for-Schleife berechnen

Soahc

Aktives Mitglied
Hallo,

mit
Java:
for (int i = 0; i< 255; i++){
  Color color = new Color(255,i,i);	               
}

kann ich mir alle Farben für einen Farbverlauf von rot nach weiß in 255 Schritten berechnen lassen. Ich hätte aber gern einen Verlauf über alle Farben, also von rot, über grün nach blau (auch wieder in 255 Schritten). Ich probiere schon eine Weile hin, aber bekomme es nicht hin. Hat da jemand einen Tip?

gruß, Soahc
 
M

Marcinek

Gast
Du möchstest 255 * 255 farben in 255 schritten darstellen??

mach doch erstmal zwei schleifen und dann kannst du den schritt größer machen und gucken, wie es sich verhält.
 

Marco13

Top Contributor
Klassisch :) "Alle" Farben sind schon verdammt viele :D

Hatte da mal was gebastelt, wovon ich mal einen Schnipsel posten kann
Java:
    // Irgendwie erstellen:
    List<Color> list = Arrays.asList(Color.RED, Color.GREEN, Color.BLUE);

...

    private int[] buildRGB(int size)
    {
        int rgbColors[] = new int[size];
        float stepSize = (float)size / (list.size()-1);
        for (int i=0; i<size; i++)
        {
            float a = (float)i / size;
            int ci0 = (int)(a * (list.size()-1));
            int ci1 = ci0 + 1;
            
            Color c0 = list.get(ci0);
            int r0 = c0.getRed();
            int g0 = c0.getGreen();
            int b0 = c0.getBlue();

            Color c1 = list.get(ci1);
            int r1 = c1.getRed();
            int g1 = c1.getGreen();
            int b1 = c1.getBlue();
            
            int dr = r1-r0;
            int dg = g1-g0;
            int db = b1-b0;

            float alpha = (i-(ci0*stepSize)) / stepSize;
            
            int r = (int)(r0 + alpha * dr);
            int g = (int)(g0 + alpha * dg);
            int b = (int)(b0 + alpha * db);
            int rgb = 
                (r << 16) |
                (g <<  8) |
                (b <<  0);

            System.out.println("at "+i+" a "+a+" ci0 "+ci0+" alpha "+alpha+" rgb "+r+" "+g+" "+b);
            
            rgbColors[i] = rgb;
        }
        return rgbColors;
    }
    
    private Color[] buildColors(int size)
    {
        int rgbColors[] = buildRGB(size); 
        Color colors[] = new Color[size];
        for (int i=0; i<size; i++)
        {
            colors[i] = new Color(rgbColors[i]);
        }
        return colors;
    }

Das sollte "flüssig" über die Farben in der "list" rüberinterpolieren, mit der angegeben anzahl schritt (bei dir wäre 'size' also 255 oder 256)
 

Landei

Top Contributor
Ich denke, du solltest dir mal das HSB-Modell anschauen, das ebenfalls in Java verfügbar ist.

Dabei lässt du Sättigung (s) und Helligkeit (b) fest, und änderst den Farbton (h). Die Farbe kannst du dann mit [c]Color color = new Color(Color.HSBtoRGB(h, s, b));[c] generieren. Allerdings sind die HSB-Werte floats von 0..1, du müsstest also z.B. [c]float h = i / 255F;[/c] rechnen.
 

Soahc

Aktives Mitglied
Wow cool.

Java:
for (int i = 1; i < 255; i++) {
  float h = i / 255F;
  Color color = new Color(Color.HSBtoRGB(h, 1f, 1f));
  ...
}

macht es genauso, wie ich es haben will. Super, vielen Dank!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G JavaFX Line Chart mit Farbverlauf/Gradient in Linie AWT, Swing, JavaFX & SWT 1
J JProgressBar Farbverlauf AWT, Swing, JavaFX & SWT 2
M Farbverlauf AWT, Swing, JavaFX & SWT 5
M Farbverlauf im Jlabel AWT, Swing, JavaFX & SWT 14
J Mehrere Kompenenten im Farbverlauf anzeigen AWT, Swing, JavaFX & SWT 3
G Rechteck mit Farbverlauf AWT, Swing, JavaFX & SWT 5
J Farbverlauf im Labelhintergrund AWT, Swing, JavaFX & SWT 6
G Abwechselnder Farbverlauf in einer JTable AWT, Swing, JavaFX & SWT 6
K Farbverlauf -> Farbe auswählen mit Regler || JTable Selec AWT, Swing, JavaFX & SWT 5
J Farbverlauf als Hintergrund eines JLabels AWT, Swing, JavaFX & SWT 4
M Vokabelprogram - Schleife für Liste soll schrittweise durchlaufen werden AWT, Swing, JavaFX & SWT 3
G Schleife verlangsamen AWT, Swing, JavaFX & SWT 3
ms_cikar Update swingUtilities Repaint in der Schleife AWT, Swing, JavaFX & SWT 3
W fillRect() in Schleife spukt nur Fehler aus AWT, Swing, JavaFX & SWT 3
heinz ketchup While-Schleife in einem Service für GUI AWT, Swing, JavaFX & SWT 22
A Swing JLabels in einer ForEach Schleife an den JPanel anheften (UNO Netzwerkspiel) AWT, Swing, JavaFX & SWT 1
S While Schleife im Actionlistener AWT, Swing, JavaFX & SWT 1
R MVC Observer While-Schleife AWT, Swing, JavaFX & SWT 3
L JTabbedPane mit for Schleife aufbauen AWT, Swing, JavaFX & SWT 4
I Applet BlueJ Applet - Bild mit if-Schleife zeichnen lassen AWT, Swing, JavaFX & SWT 16
A Problem: repaint() - Schleife AWT, Swing, JavaFX & SWT 3
J GridBagLayout mit Hilfe einer For-Schleife befüllen AWT, Swing, JavaFX & SWT 1
C In der Schleife ActionListener aktivieren AWT, Swing, JavaFX & SWT 3
C SWT Tab in Schleife AWT, Swing, JavaFX & SWT 9
C Schleife auf Mausklick warten lassen AWT, Swing, JavaFX & SWT 6
H Swing Komponenten per Schleife auf JFrame AWT, Swing, JavaFX & SWT 4
F JLabel mittles Schleife einbinden?? AWT, Swing, JavaFX & SWT 3
D Swing JLabels in einer Schleife aktualisieren AWT, Swing, JavaFX & SWT 2
S Problem mit JLabel (Bewegung in Schleife) AWT, Swing, JavaFX & SWT 7
D Schleife für Button AWT, Swing, JavaFX & SWT 4
R for-Schleife in Applet ausgeben AWT, Swing, JavaFX & SWT 3
H Mit for-schleife die Componenten eines Frames verändern AWT, Swing, JavaFX & SWT 5
A Jedes JTextfield einer klasse in einer foreach schleife abarbeiten AWT, Swing, JavaFX & SWT 3
R jTextField in Schleife ausfuellen AWT, Swing, JavaFX & SWT 4
I Swing repaint wird in for-Schleife aufgerufen - was passiert? AWT, Swing, JavaFX & SWT 12
M Button funktioniert nicht mehr wenn Schleife läuft AWT, Swing, JavaFX & SWT 3
R zweidim. JButton-Array in Schleife -> NullPointerExceptio AWT, Swing, JavaFX & SWT 2
S JMenu und ActionListener per Schleife erzeugen AWT, Swing, JavaFX & SWT 3
R das letzte JLabel in der Schleife will nicht an seinen Platz AWT, Swing, JavaFX & SWT 2
J ActionListener nimmt keine for()-Schleife? AWT, Swing, JavaFX & SWT 4
G For-Schleife AWT, Swing, JavaFX & SWT 4
B Deklaration von vielen Buttons mit Schleife vereinfachen? AWT, Swing, JavaFX & SWT 9
P JRadioButton in Schleife erstellen > wo liegt mein Fehler AWT, Swing, JavaFX & SWT 2
M Schleife mit Button abbrechen AWT, Swing, JavaFX & SWT 4
T JPanel in Schleife anlegen AWT, Swing, JavaFX & SWT 7
raptorrs JTextfelder werden in while-Schleife nicht aktualisiert AWT, Swing, JavaFX & SWT 5
F Einlesen von text in textArea mittels for-schleife AWT, Swing, JavaFX & SWT 3
R Grafische Benutzereingabe in For-Schleife AWT, Swing, JavaFX & SWT 8
L vermutlich Problem in meiner for-Schleife AWT, Swing, JavaFX & SWT 6
S Mehrere Buttons in einer Schleife erzeugen . AWT, Swing, JavaFX & SWT 3
G Schleife mit repaint funktioniert nicht. AWT, Swing, JavaFX & SWT 7
A JTable Schleife AWT, Swing, JavaFX & SWT 4
G while schleife - keylistener AWT, Swing, JavaFX & SWT 4
M JDialog in for-Schleife mit Komponenten bestücken AWT, Swing, JavaFX & SWT 6
S JButton über Schleife erstellen AWT, Swing, JavaFX & SWT 4
F Frame wird nicht angezeigt nach while-Schleife AWT, Swing, JavaFX & SWT 3
R Button löst Schleife aus, danach friert die GUI ein ? AWT, Swing, JavaFX & SWT 7
Tippster JavaFX Scene neu berechnen lassen AWT, Swing, JavaFX & SWT 5
W JavaFX Button - optimale Breite berechnen AWT, Swing, JavaFX & SWT 1
Z Swing Kann man denn abstand zwischen zwei Buttons berechnen AWT, Swing, JavaFX & SWT 5
Neumi5694 Größe von Komboboxen neu berechnen AWT, Swing, JavaFX & SWT 3
A Swing JFrame neuzeichnen lassen, position neu berechnen lassen? AWT, Swing, JavaFX & SWT 9
M JavaFX Image View Würfel berechnen AWT, Swing, JavaFX & SWT 3
F Schriftgröße von Buchstaben berechnen AWT, Swing, JavaFX & SWT 3
B 2D-Grafik Collision berechnen AWT, Swing, JavaFX & SWT 2
H preferred size abhängig von Fenstergröße berechnen AWT, Swing, JavaFX & SWT 11
M Swing JTextField "onthefly" auslesen und berechnen AWT, Swing, JavaFX & SWT 7
D Swing JViewPort, Absolut Koordinaten berechnen. AWT, Swing, JavaFX & SWT 2
A AWT HSB-Farben dynamisch berechnen AWT, Swing, JavaFX & SWT 5
T Swing JEditorPane Groesse berechnen AWT, Swing, JavaFX & SWT 2
C Alternative zu getFontMetrics um Stringlänge zu berechnen AWT, Swing, JavaFX & SWT 2
Schandro Den größten passenden java.awt.Font zu einem Rectangle berechnen AWT, Swing, JavaFX & SWT 2
M Animation berechnen AWT, Swing, JavaFX & SWT 4
D Koordinaten von einem Kreissegment berechnen AWT, Swing, JavaFX & SWT 6
T Breite des Containers ist gegeben - wie die Höhe berechnen? AWT, Swing, JavaFX & SWT 3
J Schriftgröße aus vorhandenem Platz berechnen AWT, Swing, JavaFX & SWT 9
J resize eines Bildes automatisch berechnen lassen? AWT, Swing, JavaFX & SWT 2
C Farblayer berechnen AWT, Swing, JavaFX & SWT 24
G winkel berechnen AWT, Swing, JavaFX & SWT 4
P Winkel berechnen AWT, Swing, JavaFX & SWT 18

Ähnliche Java Themen

Neue Themen


Oben