【发布时间】:2014-07-20 14:51:00
【问题描述】:
所以我需要将 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;
}
【问题讨论】:
-
仔细检查以确保
ratio在0.0-1.0的范围内 -
请注意:在 Java 中,您应该使用括号声明数组以及类型:
float[] rgb1 = new float[3]。 -
@vandale 设置为 0.5
标签: java colors alphablending