gpt4 book ai didi

javascript - 图片上下文.restore();

转载 作者:行者123 更新时间:2023-11-28 02:01:58 28 4
gpt4 key购买 nike

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

这是我的代码:

    <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>

你能帮我吗?非常感谢。

最佳答案

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

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();
};
}
}

关于javascript - 图片上下文.restore();,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13517848/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com