2017-07-21 14 views
0

我正在与一个HTMLcanvas元素,试图绘制不透明的形状,然后根据它们的不透明度对它们着色。例如,我可能画一个正方形rgba(0,0,0,.5),另一个与rgba(100, 100, 100, .5)重叠。我的问题是:重叠对alpha值有什么影响?显然,在a:.5之上的a:.5不会产生a:1 ...是否有这样的公式?它是如何工作的?RGBA像素阿尔法值在画布中

+0

他们不是简单地(反转)相乘,所以'0.5×0.5 = .25',和合并的不透明性变得'1-。 25 = .75'? – myfunkyside

+1

https://drafts.fxtf.org/compositing-1/#canvascompositingandblending – K3N

+0

这使得总体感觉,为什么它不会发生在我身上......我不知道 – WookieCoder

回答

1

所有如何alpha混合和组合物作品可以在规范中找到公式:

https://drafts.fxtf.org/compositing-1/#canvascompositingandblending

阿尔法信道相乘(见在该链接的阿尔法混合式),所以它们将不添加最多为1.

即(来源:同上):

co = Cs x αs + Cb x αb x (1 - αs) 

co: the premultiplied pixel value after compositing 
Cs: the color value of the source graphic element being composited 
αs: the alpha value of the source graphic element being composited 
Cb: the color value of the backdrop 
αb: the alpha value of the backdrop