计算透明应用程序背景图像的像素颜色

Calculate color of an Pixel for a transparent application background image

我为我的应用程序使用 VB 并且有一个包含徽标的圆形背景图像。它也有点各向异性 anisalized 以防止出现尖锐的徽标。因为 vb 只允许没有任何公差的颜色键控,所以我必须将具有 Alpha 值的像素替换为没有 Alpha 值的像素。简而言之,我必须将屏幕的像素与背景图像的像素结合起来。但问题是:我不知道获取像素结果颜色的公式。

这称为 "Alpha Compositing" 您可以使用维基百科页面 (click here) 提供的以下等式从两个透明的 RGB 图像中获取生成的 RGB 值。 (只有一个必须是透明的,所以另一个可以是您的 screen/background,具有 100% alpha。)

这些方程式假设您有一个透明物体在另一个物体之上,其中 R1 是物体 #1 的红色分量,a1 是物体 #1 的 alpha,依此类推...

我会在下面展示亮点

R = (R1 * a1 / 255) + (R2 * a2 * (255 - a1) / (255^2))
G = (G1 * a1 / 255) + (G2 * a2 * (255 - a1) / (255^2))
B = (B1 * a1 / 255) + (B2 * a2 * (255 - a1) / (255^2))
Alpha = a1 + (a2 * (255 - a1) / 255)

我还建议浏览 wiki 页面,因为它非常吸引人。