【问题标题】:Best way to display an array of images to the canvas in HTML5?在 HTML5 中将一组图像显示到画布的最佳方法是什么?
【发布时间】:2018-08-20 17:11:43
【问题描述】:

正如标题所述,我正在尝试将一系列图像放入一个数组中,然后在 HTML5 中将它们绘制到画布上,我没有收到任何错误,但没有显示任何内容。我是 HTML5 新手,所以遇到了一些麻烦。

这是我所拥有的:

    var canvas = document.querySelector('Canvas');

    canvas.width = window.innerWidth;
    canvas.height = window.innerHeight;

    var ctx = canvas.getContext('2d');


    function drawImagesToCanvas() {
        var imageArray = new Array();
        imageArray[0] = "graphics/1.png";
        imageArray[1] = "graphics/2.png";
        imageArray[2] = "graphics/3.png";
        imageArray[3] = "graphics/4.png";
        imageArray[4] = "graphics/5.png";
        imageArray[5] = "graphics/6.png";
        imageArray[6] = "graphics/7.png";
        imageArray[7] = "graphics/8.png";
        imageArray[8] = "graphics/9.png";
        imageArray[9] = "graphics/10.png";

        ctx.drawImage(imageArray[0], 120, 280, 220, 150);

    }

我认为这可能是文件路径,但我尝试了多种变体。

【问题讨论】:

  • 您阅读文档了吗? drawImage 只接受少数数据类型作为参数 developer.mozilla.org/en-US/docs/Web/API/…
  • 要测试文件路径,请将路径放在您的 URL 栏中进行测试,对于您当前的示例,因为路径不以 / 开头,测试路径如下:如果页面是 http://example.org/folder1/mypage.html作为http://example.org/folder1/graphics/1.png

标签: javascript arrays html image canvas


【解决方案1】:

您没有向 drawImage 提供源 URL;它想要图像本身。这可以从 DOM 元素中读取,也可以通过在代码中构造 Image 对象来读取,如下所示:

var canvas = document.querySelector('Canvas');

canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
var ctx = canvas.getContext('2d');

function drawImagesToCanvas() {
  var imageArray = new Array();
  imageArray[0] = "https://placehold.it/220x150";
  // ...

  var img = new Image(); 
  img.onload = function() {
    ctx.drawImage(img, 20, 80, 220, 150);
  };
  img.src = imageArray[0];
}

drawImagesToCanvas();
<canvas></canvas>

【讨论】:

  • 您好,感谢您的回复。我已经换了代码,仍然没有变化。我的画布是空白的。有什么想法吗?
  • 我将代码更改为功能正常的 sn-p,因此您可以看到它正在工作。 (还删除了一些无意中包含的 ES6 语法,这可能是问题所在。对此感到抱歉)
猜你喜欢
  • 2014-06-19
  • 1970-01-01
  • 2014-05-16
  • 1970-01-01
  • 2011-05-20
  • 2012-06-12
  • 2012-03-21
  • 2016-01-13
  • 2012-08-27
相关资源
最近更新 更多