2014-07-20 61 views
0

所以我需要混合2種顏色與不同的alpha值。任何一種顏色都可以具有0-255的alpha顏色。這是我現在使用的算法,它不起作用。如果任一顏色的alpha都大於1,那麼整個顏色變爲固定。在0-255 1的範圍內應該幾乎完全透明。爲了實現這個目標我需要改變什麼?在Java中混合2色

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; 

    } 
+0

雙檢查以確保「比率」在0.0-1.0範圍內 – vandale

+0

只需注意:在Java中,您應該使用括號將float [] rgb1 = new float [3]'聲明爲數組。 – Keppil

+0

@vandale它被設置爲0.5 – user3140916

回答

0

如果你需要做的是alpha值是0-255,而不是0.0-1.0的範圍內,然後通過255採取了Alpha值,將其劃分:

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