首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅在html5-canvas上绘制阴影

仅在html5-canvas上绘制阴影
EN

Stack Overflow用户
提问于 2013-06-12 17:33:37
回答 2查看 2.3K关注 0票数 7

我正在尝试弄清楚如何在画布上绘制一些东西,并只显示它的阴影,例如:

代码语言:javascript
复制
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.shadowBlur=100;
ctx.shadowOffsetX = 150;
ctx.shadowColor="red";
ctx.fillStyle="rgba(0,0,0,0.7)";
ctx.fillRect(20,20,100,80);

在这里我画了一个黑色的矩形,并添加了一个带有偏移量的红色阴影,我希望只看到没有矩形的阴影。

正如您在示例中看到的,我尝试使用rgba颜色,但当我设置不透明度时,它也会影响阴影。

这是这段代码的一把小提琴:http://jsfiddle.net/YYvFw/

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-12 17:43:31

首先想到的是将矩形移出画布,并根据需要对阴影进行偏移。

代码语言:javascript
复制
    var canvas = document.getElementById('myCanvas'),
    context = canvas.getContext('2d'),
    width = 100,
    height = 80,
    posX = 100,
    posY = 80;

    context.rect(-width, -height, width, height);
    context.shadowColor = 'red';
    context.shadowBlur = 40;
    context.shadowOffsetX = width+posX;
    context.shadowOffsetY = height+posY;
    context.fill();

这将绘制x:100 y:80处的阴影

http://jsfiddle.net/S7WRx/2/

票数 14
EN

Stack Overflow用户

发布于 2013-06-12 17:40:38

我不知道有没有简单的方法。我唯一能想到的就是对阴影区域执行getImageData,然后清除画布并将imageData粘贴到上面。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17062125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档