给出了以下示例代码,该示例代码用新的背景替换了所有蓝色:

public void chromakeyBlue(Picture newBg)
{
    Pixel [] pixelArray = this.getPixels();
    Pixel currPixel = null;
    Pixel newPixel = null;

    for (int i = 0; i < pixelArray . length ; i++) {
        currPixel = pixelArray [ i ];

        if (currPixel.getRed() + currPixel.getGreen() < currPixel . getBlue ())
        {
            newPixel = newBg.getPixel(currPixel.getX(),
                                      currPixel.getY ( ) ) ;
            currPixel . setColor ( newPixel . getColor ( ) ) ;
        }
    }
}


我想知道是否使用这种条件:

currPixel.getRed() < currPixel.getBlue() && currPixel.getGreen() <
currPixel.getBlue()


在if语句上,是否可行。换句话说,使用该条件是否与currPixel.getRed() + currPixel.getGreen() < currPixel . getBlue ()具有相同的影响?

最佳答案

currPixel.getRed() + currPixel.getGreen() < currPixel.getBlue()将测试蓝色是否大于红色+绿色的总和。因此,如果RGB为10、10、15,则此条件的值为false。

currPixel.getRed() < currPixel.getBlue() && currPixel.getGreen() <currPixel.getBlue()将测试蓝色是否大于红色并且蓝色是否大于绿色。因此,如果RGB为10、10、15,则此条件的值为true。

所以不,这两种情况都不会产生相同的效果。 (如果在视觉上看起来相似,那可能只是巧合的测试结果)

07-24 15:21