7

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

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/

4

2 回答 2

14

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

    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/

于 2013-06-12T09:43:31.393 回答
0

不知道有没有简单的方法。我唯一能想到的就是为阴影区域获取图像数据,然后清除画布并将图像数据粘贴到它上面。

于 2013-06-12T09:40:38.040 回答