2
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;
            }
        }
    }
}

我需要将白色与像素混合,但这段代码只是让一切变得更亮!它需要看起来像这样:

混合白色 - 插图

对此代码的任何帮助将不胜感激!

4

1 回答 1

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 平均混合。

于 2013-03-12T22:25:06.960 回答