2016-03-31 5 views
1

を使用して緑の私は間gradiendの色を作るしようとしています:Javaの色

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

しかし、私はそれを実装する方法がわかりません。

私の試みはひどいので、私はあなたに助けを求める。

私の試み:

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); 
    } 

ルック:

GRADIENT IMAGE OUTPUT

は、任意の助けをありがとう!

+0

「白(明から暗)」とはどういう意味ですか?どのようにして1つの白を別のものより暗くすることができますか –

+0

@SashaSalauyou私はそれが明るいから暗い(灰色)に行くことを意味する.. – chelocre

答えて

0

私はそれの種類であるべきだと思う:

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); 
} 

考え代わりにH(色相)およびS(彩度)成分がカラーsircleの位置を決定するRGBのHSV色空間で動作します、 Vは「値」を決定します - 黒の点からの色の距離。したがって、HとSコンポーネントを修正し、Vを変えて色を明るくまたは暗くします。

を参照してください:あなたは、各色のためのより適切なhs定数を見つけた場合https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html#HSBtoRGB-float-float-float-

を、/編集コメントして自由に感じます。