2014-07-20 2 views
0

Так что мне нужно смешать 2 цвета с различными значениями альфа. Любой цвет может иметь альфа-цвет 0-255. Вот алгоритм, который я использую сейчас, и он не работает. Если альфа превышает 1 для любого цвета, тогда весь цвет становится твердым. По шкале 0-255 1 должно быть почти полностью прозрачным. Что мне нужно изменить, чтобы добиться этого?Blend 2 Цвета в Java

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

Double убедитесь, что 'ratio' находится в диапазоне от 0.0-1.0 – vandale

+0

Просто примечание: на Java вы должны объявить свои массивы с помощью скобок вместе с типом:' float [] rgb1 = new float [3] '. – Keppil

+0

@vandale Установлено значение 0,5 – user3140916

ответ

0

Если все, что вам нужно сделать, это иметь значение альфа быть в диапазоне 0-255 вместо 0.0-1.0, а затем взять значение альфа и разделить его на 255:

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