Alpha Blend如果背景Alpha不是255 / 1.0f

时间:2013-12-12 18:02:57

标签: c# colors alphablending

我正在尝试在c#中进行alpha混合。 所以我的实际代码是:

final.Red = (pencil.Red * pencil.Alpha) + (background.Red * (1.0f - pencil.Alpha));
final.Green = (pencil.Green * pencil.Alpha) + (background.Green * (1.0f - pencil.Alpha));
final.Blue = (pencil.Blue * pencil.Alpha) + (background.Blue * (1.0f - pencil.Alpha));

如果背景像素没有不透明度,这可以正常工作。 但是如果背景像素具有不透明度,那么颜色的计算是什么?

1 个答案:

答案 0 :(得分:1)

好的,我自己做了。没有我想象的那么复杂。 Heres是我的解决方案:

final.Red = (pencil.Red * pencil.Alpha) + (background.Red * (1.0f - pencil.Alpha));
final.Green = (pencil.Green * pencil.Alpha) + (background.Green * (1.0f - pencil.Alpha));
final.Blue = (pencil.Blue * pencil.Alpha) + (background.Blue * (1.0f - pencil.Alpha));
final.Alpha = background.Alpha + (1.0f - background.Alpha * pencil.Alpha);

有了它,它正在处理每个背景不透明度。