2016-03-31 26 views
1

Ich versuche gradiend Farbe zwischen zu machen:Wie man Gradienten Farbe weiß - braun - grün mit Java Farbe

White (light to dark) 
Brown (dark to light 
Green (dark to ligh) 

Aber ich weiß nicht, wie es zu implementieren.

Mein Versuch war schrecklich, und so bitte ich Sie um Hilfe.

Mein Versuch:

for (int i = 255; i > 0; i--) { 
     if (i > 230) { 
      g2.setColor(new Color(0 + i, 0 + i, 0 + i)); 
     } else if (i <= 230 && i > 180) { 
      g2.setColor(new Color(139 - (255 - i), 89 - (255 - i), 19)); 
     } else if (i <= 180 && i > 79) { 
      g2.setColor(new Color(0, 60 + (180 - i), 0)); 
     } else { 
      g2.setColor(Color.blue); 
     } 
     g2.drawLine(0, 255 - i, 500, 255 - i); 
    } 

Look:

GRADIENT IMAGE OUTPUT

Vielen Dank für jede Hilfe!

+0

was meinen Sie mit "Weiß (hell bis dunkel)"? Wie kann ein Weiß dunkler sein als ein anderes? –

+0

@SashaSalauyou Ich meine es geht von hell zu dunkel (grau) .. – chelocre

Antwort

0

Ich denke, es ist eine Art sein sollte:

for (int i = 255; i > 0; i--) { 
    float h; 
    float s; 
    float v; 
    if (i > 230) { 
     h = 0;  // gray 
     s = 0; 
     v = 1f * i/255; 
    } else if (i <= 230 && i > 180) { 
     h = 0.1; // brown 
     s = 0.8; 
     v = 1f * (230 - i)/(230 - 180); 
    } else if (i <= 180 && i > 79) { 
     h = 0.33; // green 
     s = 1f; 
     v = 1f * (180 - i)/(180 - 79); 
    } else { 
     h = 0.62; // blue 
     s = 1f; 
     v = 1f; 
    } 
    g2.setColor(new Color(Color.HSBtoRGB(h, s, v))); 
    g2.drawLine(0, 255 - i, 500, 255 - i); 
} 

Die Idee zu betreiben ist in HSV-Farbraum anstelle von RGB, wo H (Farbton) und S (Sättigung) -Komponenten Position an Farbe sircle bestimmen, und V bestimmt "Wert" - wie weit ist die Farbe vom schwarzen Punkt entfernt. Also, Sie reparieren H- und S-Komponenten und variieren V, um eine Farbe heller oder dunkler zu machen.

See: https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html#HSBtoRGB-float-float-float-

Wenn Sie geeignetere h und s Konstanten für jede Farbe zu finden, fühlen Sie sich frei/Kommentar bearbeiten.