【发布时间】:2016-08-30 22:07:01
【问题描述】:
我看不到这已经发布了,所以就这样吧。
假设我在画布上画了 2 个正方形。
var c = document.getElementById('test'), ctx = c.getContext('2d');
ctx.fillStyle = "rgba(0,0,255,0.5)";
ctx.beginPath();
ctx.moveTo(25, 0);
ctx.lineTo(50, 50);
ctx.lineTo(0, 50);
ctx.lineTo(25, 0);
ctx.fill();
ctx.fillStyle = "rgba(255,0,0,0.5)";
ctx.beginPath();
ctx.moveTo(50, 0);
ctx.lineTo(75, 50);
ctx.lineTo(25, 50);
ctx.lineTo(50, 0);
ctx.fill();
这会产生这个图像:
如果我将 globalAlpha 更改为 0.5,我会得到:
但是,我想制作这个:
就像这样,所有像素都是透明的,它下面的任何图像都会出现,但红色三角形创建的像素会覆盖它所绘制的现有蓝色三角形。
并且 ctx.globalComposisteOperation 在这种情况下似乎没有帮助,因为它还考虑了透明度以及我想保留两个正方形的事实。
有没有办法用当前的方法做到这一点?
【问题讨论】:
-
我不明白。最终结果如何透明?你想要一个白色的透明覆盖层吗?看起来您可以通过简单地更改颜色来获得最终结果,然后您甚至不需要使用 alpha。
-
@Dom 他们可能正在渲染到第二个画布以创建透明覆盖。有点像 UI 层。但我不知道这是否是 OP 实际在做的事情。
-
@MikeC 非常正确,鉴于提供的示例,很难说。
标签: javascript html canvas transparency