2016-05-26 3 views
-3

Я знаю, что у Цвет есть метод darker(), который возвращает более темную версию цвета. Есть ли способ изменить коэффициент (я считаю, что это 0,7), в котором цвет делает это, тем самым делая цвет менее темным (или наоборот, менее/более ярким)?Сделать цвет java менее темным?

Из API Java:

Этот метод применяется произвольный масштабный коэффициент для каждого из трех компонентов RGB этого цвета, чтобы создать более темный вариант этого цвета.

Другими словами, могу ли я изменить этот произвольный масштабный коэффициент?

+2

изменить компоненты RGB самостоятельно, это просто удобный метод. – zapl

+1

Почему бы вам не изменить цвет своего лица каким-либо фактором? Разве это не просто. –

+0

почему бы не прочитать исходный код и изменить его в соответствии с вашими требованиями? –

ответ

3

javaAPI не предоставляет никаких полезных функций для этого. В любом случае, это довольно тривиально, так почему бы не закодировать его самостоятельно?

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, цвет становится ярче, для factor < 1, цвет становится темнее. Этот метод должен быть обратимым, за исключением некоторых ошибок округления.

Примечание Этот метод не ручки крайние случаи, как переполнение для factor близко к Float.MAX_VALUE и не будет работать для идеального черного (new Color(0.0, 0.0, 0.0)).

+0

Я, конечно, могу ... Мне просто интересно, был ли более чистый способ сделать Это. Спасибо, хотя – RobotKarel314

+0

Рассмотрите возможность проверки границ/границ, прежде чем создавать цвет в этом методе. –

+0

@HovercraftFullOfEels может быть хорошей идеей. Это был просто быстрый пример того, как это можно сделать. – Paul

Смежные вопросы