public class BlendablePicture extends Picture {
public BlendablePicture(String filename) {
super(filename);
}
public void blendRectWithWhite(int xMin, int yMin, int xMax, int yMax,
double a) {
int x;
x = xMin;
while (x <= xMax) {
int y;
y = yMin;
while (y <= yMax) {
Pixel refPix = this.getPixel(x, y);
refPix.setRed((int) Math.round(refPix.getRed() * (1.0 + a)));
refPix.setGreen((int) Math.round(refPix.getGreen() * (1.0 + a)));
refPix.setBlue((int) Math.round(refPix.getBlue() * (1.0 + a)));
y = y + 1;
}
}
}
}
我需要将颜色与像素混合在一起,但这段代码只是让人眼花缭乱!它需要看起来像这样:
任何有关此代码的帮助将不胜感激!
答案 0 :(得分:3)
而不是
refPix.setRed ( (int) Math.round (refPix.getRed () * (1.0+ a) ));
尝试类似
的内容 refPix.setRed ( (int) Math.round (refPix.getRed()*(1.0-a)+255*a ));
当a = 1.0时,得到R * 0.0 + 255 * 1.0 = 255
当a = 0.0时,得到R * 1.0 + 255 * 0.0 = R
当a = 0.5时,得到R * 0.5 + 255 * 0.5(半个半)
这适用于任何颜色,不仅仅是白色,您只需要将红色,绿色和蓝色的255替换为要与其混合的颜色,并获得RGB平均混合。