使用画布可以在半透明形状上创建发光效果吗?
我有一个半透明的形状:
ctx.fillStyle = "rgba(255, 255, 255, 0.5)";
ctx.beginPath();
ctx.moveTo(0, 150);
ctx.lineTo(300, 0);
ctx.lineTo(300, 450);
ctx.lineTo(50, 500);
ctx.closePath();
ctx.fill();
我想添加一点阴影,但我希望它只出现在形状之外,我想更多的是发光而不是阴影。有没有办法在画布上做到这一点,就像我的尝试一样:
ctx.shadowBlur = 5;
ctx.shadowColor = 'rgba(0, 0, 0, 0.25)';
看起来很普通,因为通过半透明形状可以看到暗影。
谢谢!
I have a semi-transparent shape:
ctx.fillStyle = "rgba(255, 255, 255, 0.5)";
ctx.beginPath();
ctx.moveTo(0, 150);
ctx.lineTo(300, 0);
ctx.lineTo(300, 450);
ctx.lineTo(50, 500);
ctx.closePath();
ctx.fill();
I want to add a bit of shadow, but I want it to only appear outside of the shape, I guess more of a glow than a shadow. Is there a way to do this in canvas as my attempts with:
ctx.shadowBlur = 5;
ctx.shadowColor = 'rgba(0, 0, 0, 0.25)';
look fairy ordinary as the dark shadow is visible through the semi-transparent shape.
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我认为最简单的方法是创建一个剪切区域,其中包含形状之外的所有内容,然后在那里绘制阴影。
这里有创建反向剪辑区域的描述: forums.whatwg.org 。
基本上,对于您来说,步骤是:
然后启用阴影并绘制形状。
恢复初始剪辑区域:
然后在没有阴影的情况下,正常绘制形状。
I think the easiest way to do this is create a clipping region that includes everything outside the shape and then draw the shadow there.
There is a description of creating inverted clip regions here: forums.whatwg.org.
Basically, for you the steps would be:
Then enable shadows and draw your shape.
Restore the initial clip region:
Then without shadows, draw your shape as normal.