提问者:小点点

为什么我不能用画布画一幅画?


我试着在画布里放一幅画。但就是没有出现。我谷歌了一下,看看哪里出了问题。不幸的是,我还是解决不了。这是我的代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Test</title>
</head>
<link rel="stylesheet" href="mainStyle.css">
<body>
    <div class="game-border">
        <canvas id="gc"></canvas>
        <script>
            window.onload=function(){
                var cnvs=document.getElementById("gc");
                var ctx=cnvs.getContext("2d");
                var img=new Image();
                img.src="/img/road.jpg";
                ctx.drawImage(img,0,0);
            };
        </script>
    </div>
</body>
</html>

这是css文件

*{
    box-sizing: border-box;
    padding: 0;
    margin: 0;
}

.game-border{
    display: flex;
    justify-content: center;
    justify-items: center;
}

#gc{
    width: 100vmin;
    height: 100vmin;
    background-color: coral;
}

共1个答案

匿名用户

如果在图像完成加载之前尝试调用drawImage(),它将不会执行任何操作。因此,您需要确保使用load事件,以便在映像加载之前不要尝试此操作:

var img = new Image();   // Create new img element
img.addEventListener('load', function() {
  // execute drawImage statements here
  ctx.drawImage(img,0,0);
}, false);
img.src = 'myImage.png'; // Set source path

来源:https://developer.mozilla.org/en-us/docs/web/api/canvas_api/tutorial/using_images