<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>
<img src="../images/img_lamp.jpg" id="lamp">
<canvas id="myCanvas" width="300" height="150" style="border:1px solid #d3d3d3;">
您的浏览器不支持 HTML5 canvas 标签。
</canvas>
<script>
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
ctx.clearRect(0, 0, c.width, c.height);
var img = document.getElementById("lamp")
var pat = ctx.createPattern(img, 'repeat');
ctx.rect(0, 0, 220, 128);
ctx.fillStyle = pat;
ctx.fill();
</script>
</body>
</html>
为什么上面这段代码执行后,画布里没有效果呢?
需要在window.onload后执行画布操作,因为需要使用到图片资源,window.onload必须等到页面内包括图片的所有元素和资源加载完毕后才能执行。
有效请采纳,谢谢!
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>
<img src="../images/img_lamp.jpg" id="lamp">
<canvas id="myCanvas" width="300" height="150" style="border:1px solid #d3d3d3;">
您的浏览器不支持 HTML5 canvas 标签。
</canvas>
<script>
window.onload = function () {
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
ctx.clearRect(0, 0, c.width, c.height);
var img = document.getElementById("lamp")
var pat = ctx.createPattern(img, 'repeat');
ctx.rect(0, 0, 220, 128);
ctx.fillStyle = pat;
ctx.fill();
}
</script>
</body>
</html>
https://www.runoob.com/try/demo_source/img_lamp.jpg
使用这个图片链接就可以,我也不知道为啥