Java 模拟颜色透明度

Java 模拟颜色透明度,java,colors,rgb,alpha,argb,Java,Colors,Rgb,Alpha,Argb,我有RGB颜色值和alpha值。假设我有白色背景并且应用了alpha,如何获得新的RGB值?应用于每个颜色通道的公式如下: cr = cf * af + cb * ab * (1 - af) 其中cr是像素的结果颜色,cf是前景颜色,cb是背景颜色,af前景alpha和ab背景alpha 请注意,通常颜色值已存储为alpha的预乘,在这种情况下,公式简化为 cr = cf + cb * (1 - af) 另请参见。假设我的颜色为红色(ff0000),alpha为0.5,背景为白色。尝试获取结

我有RGB颜色值和alpha值。假设我有白色背景并且应用了alpha,如何获得新的RGB值?

应用于每个颜色通道的公式如下:

cr = cf * af + cb * ab * (1 - af)
其中cr是像素的结果颜色,cf是前景颜色,cb是背景颜色,af前景alpha和ab背景alpha

请注意,通常颜色值已存储为alpha的预乘,在这种情况下,公式简化为

cr = cf + cb * (1 - af)

另请参见。

假设我的颜色为红色(ff0000),alpha为0.5,背景为白色。尝试获取结果颜色:ff0000*0.5+ffffff*0.5=ff7fff,但这不是我所期望的。。。我做错了什么?将公式分别应用于每种颜色(红色、绿色、蓝色)新颜色的alpha通道如何?