0
我正在与一个HTML
canvas
元素,试图绘制不透明的形状,然后根据它们的不透明度对它们着色。例如,我可能画一个正方形rgba(0,0,0,.5)
,另一个与rgba(100, 100, 100, .5)
重叠。我的问题是:重叠对alpha
值有什么影响?显然,在a:.5
之上的a:.5
不会产生a:1
...是否有这样的公式?它是如何工作的?RGBA像素阿尔法值在画布中
我正在与一个HTML
canvas
元素,试图绘制不透明的形状,然后根据它们的不透明度对它们着色。例如,我可能画一个正方形rgba(0,0,0,.5)
,另一个与rgba(100, 100, 100, .5)
重叠。我的问题是:重叠对alpha
值有什么影响?显然,在a:.5
之上的a:.5
不会产生a:1
...是否有这样的公式?它是如何工作的?RGBA像素阿尔法值在画布中
所有如何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
他们不是简单地(反转)相乘,所以'0.5×0.5 = .25',和合并的不透明性变得'1-。 25 = .75'? – myfunkyside
https://drafts.fxtf.org/compositing-1/#canvascompositingandblending – K3N
这使得总体感觉,为什么它不会发生在我身上......我不知道 – WookieCoder