有没有办法在Java图形编程中更改单个颜色组件(除了更亮()和更暗()方法?例如,如果我用r,g,b颜色组件创建一个Color对象然后希望修改其中一个是否有办法这样做?
Color x = new Color(255,0,0);
有没有办法快速更改其中一个颜色组件?
答案 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());
}