2016-05-26 9 views
-3

私は色がより暗いバージョンの色を返すdarker()メソッドを持っていることを知っています。 Colorがそうする要因を変える方法はありますか(それは0.7だと考えています)、Colorをより少なく/より暗く(逆に、より少なく/もっと明るく)していますか? Java APIからJavaの色を暗くしないでください。

このメソッドは、この色の暗いバージョンを作成するには、この色の三のRGB成分の各々に任意のスケールファクタを適用します。

つまり、この任意のスケール係数を変更できますか?

+2

自分でRGBコンポーネントを変更するだけで便利な方法です – zapl

+1

自分で色を変更してみませんか?そう簡単にはありません。 –

+0

なぜソースコードを読んで自分に合うように変更するのですか –

答えて

3

javaAPIは、このためのユーティリティを提供しません。とにかく、それはかなり簡単です、なぜあなた自身をコード化しないのですか? factor > 1について

Color overrideBrightness(Color c , float factor){ 
    if(factor < 0) 
     throw new IllegalArgumentException("Factor must be positive"); 

    float[] components = c.getComponents(); 

    return new Color(Math.min(components[0] * factor , 1.0) , 
        Math.min(components[1] * factor , 1.0) , 
        Math.min(components[2] * factor , 1.0) , 
        components[3]); 
} 

、色が明るくなり、factor < 1ため、色が暗くなります。このメソッドは、いくつかの丸め誤差を除いて、可逆でなければなりません。

Float.MAX_VALUEに近いfactorのオーバーフローのような、ないハンドル極端なケースを行い、完全な黒(new Color(0.0, 0.0, 0.0))のために動作しませんこの方法。

+0

私は確かにできますか?それ。ありがとうございます – RobotKarel314

+0

そのメソッドでColorを作成する前に境界/エッジ条件を確認することを検討してください。 –

+0

@HovercraftFullOfEelsは良いアイデアかもしれません。これはどのようにこれを行うことができるかの簡単な草案でした。 – Paul

関連する問題