Javascript HTML5画布:仅外部阴影
如果我在画布上画一个矩形,并启用阴影,那么将创建内部阴影和外部阴影,但我只需要外部阴影Javascript HTML5画布:仅外部阴影,javascript,html,canvas,Javascript,Html,Canvas,如果我在画布上画一个矩形,并启用阴影,那么将创建内部阴影和外部阴影,但我只需要外部阴影 var c=document.getElementById("myCanvas"); var ctx=c.getContext("2d"); ctx.shadowColor = 'black'; ctx.shadowBlur = 5; ctx.strokeRect(20,30,150,75); 我找到的唯一方法是ctx.clearRect(20,30150,75)。但这并不是我真正想要的,因为在我的直肠
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.shadowColor = 'black';
ctx.shadowBlur = 5;
ctx.strokeRect(20,30,150,75);
我找到的唯一方法是ctx.clearRect(20,30150,75)代码>。但这并不是我真正想要的,因为在我的直肠下可能有一些东西,我不想删除它
提前感谢,您可以获取矩形内的像素,进行绘制并将这些像素放回原处。这样,矩形内的像素就不会改变:
要保留边框,请使用(21、31、148、73)
作为区域(假设笔划宽度为1px)。您也可以使用.fillRect()
而不是.strokeRect()
。这将创建一个实心矩形,其内部颜色定义为.fillStyle()
您仍然会遇到覆盖矩形下方的内容的问题,因此您仍然需要pimvdb的解决方案来解决该问题。可能是context.shadowOffsetX
和context.shadowOffsetY
var imgdata = ctx.getImageData(20, 30, 150, 75);
ctx.strokeRect(20, 30, 150, 75);
ctx.putImageData(imgdata, 20, 30);
ctx.shadowColor = 'black';
ctx.fillStyle = 'white';
ctx.shadowBlur = 5;
ctx.fillRect(20,30,150,75);