在Java中更改颜色组件

时间:2014-08-03 18:53:16

标签: java graphics colors components rgb

有没有办法在Java图形编程中更改单个颜色组件(除了更亮()和更暗()方法?例如,如果我用r,g,b颜色组件创建一个Color对象然后希望修改其中一个是否有办法这样做?

Color x = new Color(255,0,0);

有没有办法快速更改其中一个颜色组件?

1 个答案:

答案 0 :(得分:1)

您实际上无法更改现有的Color对象。要拥有另一个,您必须创建另一个Color对象,因为该对象始终由构造函数值定义。这也是内部实现darker()和更亮()的方式。看看

public Color brighter() {
    int r = getRed();
    int g = getGreen();
    int b = getBlue();
    int alpha = getAlpha();

    /* From 2D group:
     * 1. black.brighter() should return grey
     * 2. applying brighter to blue will always return blue, brighter
     * 3. non pure color (non zero rgb) will eventually return white
     */
    int i = (int)(1.0/(1.0-FACTOR));
    if ( r == 0 && g == 0 && b == 0) {
        return new Color(i, i, i, alpha);
    }
    if ( r > 0 && r < i ) r = i;
    if ( g > 0 && g < i ) g = i;
    if ( b > 0 && b < i ) b = i;

    return new Color(Math.min((int)(r/FACTOR), 255),
                     Math.min((int)(g/FACTOR), 255),
                     Math.min((int)(b/FACTOR), 255),
                     alpha);
}

public Color darker() {
    return new Color(Math.max((int)(getRed()  *FACTOR), 0),
                     Math.max((int)(getGreen()*FACTOR), 0),
                     Math.max((int)(getBlue() *FACTOR), 0),
                     getAlpha());
}