首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Image context.restore();

Image context.restore();
EN

Stack Overflow用户
提问于 2012-11-23 01:48:46
回答 1查看 550关注 0票数 2

我开始学习画布,我刚刚遇到了我的第一个令人沮丧的情况,我试图制作一个三角形中的.jpg src的剪切蒙版。一切看起来都很好,直到我恢复我的上下文并尝试添加任何其他路径...我的剪贴蒙版似乎不存在了。

下面是我的代码:

代码语言:javascript
复制
    <script>
function init() {
    var canvas = document.getElementById('myCanvas');
    if(canvas.getContext) {

    var context = canvas.getContext('2d');
    var imageObj = new Image();
    imageObj.src = 'stephgopro2.jpg';

    // triangle coordonate
    context.save();
    context.beginPath;
    context.moveTo(100, 0);
    context.lineTo(0, 100);
    context.lineTo(200, 100);
    context.lineTo(100, 0);
    context.clip();

    imageObj.onload = function() {
        context.drawImage(imageObj, 0, 0, 300, 170);
    };

    context.restore();
    context.beginPath();
    context.fillStyle = '#333';
    context.rect(0, 0, 600, 200);
    context.fill();
    }
}
</script>

</head>
<body onload='init()'>
  <canvas id="myCanvas" width="600" height="200"></canvas>

</body>

你能帮帮我吗?非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-23 05:14:22

图像是异步加载的,因此在将图像绘制到画布之前,已经恢复了上下文。如果您按如下方式更新代码,您将获得(我认为是)您期望的结果:

代码语言:javascript
复制
function init() {
    var canvas = document.getElementById('myCanvas');
        if(canvas.getContext) {

        var context = canvas.getContext('2d');
        var imageObj = new Image();
        imageObj.src = 'assets/1.jpg';

        // triangle coordonate
        context.save();
        context.beginPath();
        context.moveTo(100, 0);
        context.lineTo(0, 100);
        context.lineTo(200, 100);
        context.lineTo(100, 0);
        context.stroke();
        context.clip();

        imageObj.onload = function() {
            context.drawImage(imageObj, 0, 0, 300, 170);

            // Restore the context and continue drawing now the image has been drawn
            context.restore();
            context.beginPath();
            context.fillStyle = '#333';
            context.rect(0, 0, 600, 200);
            context.fill();
        };
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13517848

复制
相关文章

相似问题

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