【问题标题】:HTML5 Canvas layer issueHTML5 Canvas 图层问题
【发布时间】:2010-08-12 20:28:24
【问题描述】:

我有类似的层问题html5 - canvas element - Multiple layers

但是,接受的答案对我不起作用,至于 layer1 我已经渲染了图像 (drawImage)

第二层 - layer2(渐变)总是 layer1。

示例代码:

    canvas = document.getElementById("layer1");
    ctx = canvas.getContext("2d");

    var img = new Image();
    img.src = "/img/img.png";
    img.onload = function() {
      ctx.drawImage(img, 0, 0);
    };

    canvas2 = document.getElementById("layer2");
    ctx2 = canvas.getContext("2d");

    var my_gradient = ctx2.createLinearGradient(0, 0, 0, 400);
    my_gradient.addColorStop(0, "black");
    my_gradient.addColorStop(1, "white");
    ctx2.fillStyle = my_gradient;
    ctx2.fillRect(0, 0, 500, 555);

HTML:

    <canvas id="layer1" width="1000" height="1000" style="position: absolute; left: 0; top: 0; z-index: 0;"></canvas>
    <canvas id="layer2" width="1000" height="1000" style="position: absolute; left: 0; top: 0; z-index: 1;"></canvas>

【问题讨论】:

    标签: javascript html canvas


    【解决方案1】:

    您正在将 ctx2 设置为 layer1 的上下文:

    ctx2 = canvas.getContext("2d");
    

    当然,由于图像是异步加载的,所以onload 事件会在您绘制渐变之后触发,并且它会被绘制在同一个画布上。

    【讨论】:

    • 是的,你说得对。现在可以了。但这很奇怪,因为 layer2 有更多的 z-index。无论如何,它现在可以工作了,谢谢!
    猜你喜欢
    • 2015-08-05
    • 2012-05-18
    • 2014-07-24
    • 2011-05-24
    • 2019-05-29
    • 1970-01-01
    • 2013-03-23
    • 2011-05-11
    • 1970-01-01
    相关资源
    最近更新 更多