javascript - Canvas 不绘制图像

标签 javascript canvas drawimage

我只是想弄清楚如何在 Canvas 上绘制图像。我遵循了 W3 学校的教程,但是当我自己尝试时,它似乎没有用。我将下面的代码复制并粘贴到一个 HTML 文件中,但图像从未加载到 Canvas 中。我把图片下载到同一个目录。我一直在四处询问,并在网上查看,但似乎没有人知道问题出在哪里。 我使用的是更新版本的 chrome(版本 29.0.1547.76 m)。

<!DOCTYPE html>
<html>
<body>

<p>Image to use:</p>
<img id="scream" src="img_the_scream.jpg" alt="The Scream" width="220" height="277">

<p>Canvas:</p>
<canvas id="myCanvas" width="250" height="300" style="border:1px solid #d3d3d3;">
Your browser does not support the HTML5 canvas tag.</canvas>

<script>

var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
var img=document.getElementById("scream");
this.ctx.drawImage(img,10,10);

</script>

</body>
</html>

最佳答案

在您使用 drawImage 时,您的图像可能尚未完成加载:

HTML

在 img 标签中添加 onload 处理程序:

<img id="scream" onload="draw()" src="...

然后是处理它的函数:

var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
var img=document.getElementById("scream");

function draw() {
    ctx.drawImage(img,10,10);
}

Online demo here

请注意,将脚本放置在文档中的位置也很重要。

我建议您也在 JavaScript 中设置 src 属性。这使得处理 onload(或使用 img.addEventListener('load', ...) 订阅的事件)变得更加“安全”。

关于javascript - Canvas 不绘制图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19060751/

相关文章:

java - 如何在JPanel中查看BufferedImage?

javascript - 无法确定为什么canvas drawImage无法处理PNG图像

javascript - $http 请求后如何检测用户离线

javascript - 实现HTML Canvas 图像着色功能

HTML5 生成 Canvas 背景图片

javascript - 视频中的 HTML5 Canvas drawImage 未在第一次绘制时显示

javascript - 无法从 linkedIn api 获取完整信息

javascript - Docker/Next js::Cannot find module '@mui/x-date-pickers/AdapterDateFns' 或其相应的类型声明

javascript - 确保在条件 promise 之后执行 promise

c# - 如何在像素艺术编辑器中优化绘制区域