剪辑、save、restore的使用疑惑

剪辑、save、restore的使用疑惑

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>canvas图片</title>
    <style>
        canvas {
            background-color: lightblue;
        }
    </style>
</head>
<body>
<canvas id="canvas" width="800px" height="800px">您的浏览器不支持canvas
</canvas>
<script>
    var canvas = document.getElementById("canvas");
    var context = canvas.getContext('2d');
    // context.save();
 var img = new Image();
    img.src = "http://img1.sycdn.imooc.com/climg//59a7df40000165fa06000600.jpg";
    //在此处补充代码
 context.arc(150, 150, 100, 0, Math.PI * 2, false);
    context.clip();
    context.fill();
    img.onload = function(){
        context.drawImage(img, 200, 20, 220, 200, 50, 50,200,200);
    };
    // context.restore();
 context.shadowOffsetX = 15;
    context.shadowOffsetY = 15;
    context.shadowBlur = 20;
    context.shadowColor = "red";
    context.fill();

</script>
</body>
</html>

老师您好,请看以上代码,我使用剪辑剪了一个图相关下来,效果如下http://img1.sycdn.imooc.com//climg/5eca1da709df2ef407970454.jpg

我想给这个圆形头像添加一个阴影来着,结果无效,我想着,应该是剪辑的原因只能在这个范围内绘制,然后我到了save() 和restore()这两个方法,然后我在最前面保存了环境,我想在绘制阴影的时候恢复环境,然后绘制,结果一下子把剪辑的效果都给恢复了,我就在想了,那这个save 和restore有什么用呢,一招回到解放前,前面设置的样式统统失效

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,同学可以参考如下方式实现给裁剪图片添加阴影:

http://img1.sycdn.imooc.com//climg/5ecb402a0900a86814171003.jpg

希望可以帮到你!

提问者 WittChen 2020-05-24 15:18:45

这里口误,样式不会失效,剪辑区确实失效了,那以后我要用剪辑,是不是就不能出现save和restore了,如果要实现我想要的阴影效果该怎么实现,老师给个思路

  • 同学你好,是代码书写顺序导致不能成功为裁剪的图片添加阴影,可以参考上面老师给出的参考思路哦,祝学习愉快!
    2020-05-25 11:50:46
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
3.WebAPP开发与小程序
  • 参与学习           人
  • 提交作业       622    份
  • 解答问题       6815    个

微信带火了小程序,也让前端工程师有了更多的展现机会,本阶段带你从移动基础知识的学习到webAPP开发,及小程序开发,让你PC端与移动端两端通吃。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师