3

如果我想显示一个均匀的半透明图像,然后“淡出”这个图像,逐渐用另一个相同透明度的图像替换它,同时在过渡期间将组合透明度保持在恒定水平,我如何确定什么透明度绘制图像?

通过反复试验 - 在彼此之上绘制各种 alpha 的透明图像 - 我得出了下图,在一个轴上显示图像 A 的透明度,在另一个轴上显示图像 B 的透明度。'isoalpha' 线显示了沿线产生相同 alpha 的 alpha 组合。每条线代表不同级别的 Alpha,左上角完全透明。

您可以看到我正在寻找的公式不是 alphaA + alphaB == alphaTarget 的直线线性转换。

我要找的数学公式是什么?

Alpha 交叉淡入淡出图

X 轴 - 图像 B 的 alpha (0-255 lr)。Y 轴 - 图像 A 的 alpha(向下 0-255)。

4

1 回答 1

8

透明胶片成倍增加

transparency_new = transparency_a * transparency_b

然而,由于不透明度(alpha)是透明度的倒数:

1 - opacity_new = (1 - opacity_a) * (1 - opacity_b)

或者:

opacity_new = 1 - (1 - opacity_a) * (1 - opacity_b)

如果使用从 0 到 255 而不是 0 到 1.0 的 alpha,则适当缩放

alpha_new = 255 * (1 - (1 - alpha_a / 255) * (1 - alpha_b / 255))

我使用上面的公式和 Grapher.app 复制了您的图表:

在此处输入图像描述

于 2011-06-17T13:23:54.357 回答