用Java混合2种颜色

时间:2014-07-20 14:51:01

标签: java colors alphablending

所以我需要将2种颜色与不同的alpha值混合。两种颜色都可以具有0-255的alpha颜色。这是我现在使用的算法,它不起作用。如果任一颜色的alpha值大于1,则整个颜色变为实心。在0-255 1的范围内,应该几乎完全透明。为了达到这个目的,我需要改变什么?

public void blend(Color color1, Color color2, double ratio) {
        float r = (float) ratio;
        float ir = (float) 1.0 - r;

        float[] rgb1 = new float[3];
        float[] rgb2 = new float[3];

        color1.getColorComponents(rgb1);
        color2.getColorComponents(rgb2);

        Color color = new Color(rgb1[0] * r + rgb2[0] * ir, rgb1[1] * r + rgb2[1] * ir, rgb1[2] * r + rgb2[2] * ir);
        this.color = color;

    }

1 个答案:

答案 0 :(得分:0)

如果你需要做的就是让alpha值在0-255而不是0.0-1.0的范围内,那么取alpha值并除以255:

public void blend(Color color1, Color color2, int alpha) {
    float r = alpha/255.0f;
    float ir = 1.0f - alpha/255.0f;
    ...
}