第二个离屏已经做完能够显示,但是调用的时候始终显示不出来是为什么?

第二个离屏已经做完能够显示,但是调用的时候始终显示不出来是为什么?

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title>canvas离屏</title>

    <style>

        #canvas2{

          background-color: black;

        }

    </style>

</head>

<body>

    <canvas width="800px" height="600px" id="canvas">您的浏览器不支持canvas</canvas>

     <canvas width="800px" height="600px" id="canvas2">您的浏览器不支持canvas</canvas>

    <script>

        var canvas=document.getElementById("canvas");

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

        var canvas2=document.getElementById("canvas2");

        var ctx2=canvas2.getContext("2d");

        ctx2.font="50px sans-serif";

        ctx2.textAlign="center";

        ctx2.textBaseline="middle";

        ctx2.fillStyle="rgba(255,255,255,0.3)"

        ctx2.fillText("==www.imooc.com=",400,450);

        var img=new Image();

        img.src="http://img1.sycdn.imooc.com/climg//5aa6633400017bc704170220.jpg";

        

        img.onload=function(){

            ctx.drawImage(img,0,0,800,600);

            ctx.drawImage(ctx2,0,0,ctx2.width,ctx2.height,0,0,ctx.width,ctx.height)

        };

    </script>

</body>

</html>


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好, 因为在img.onload中使用drawImage方法参数写错了, 语法规定第一个参数传入的是画布也就是你这里获取的canvas。但是你传入的ctx只是一个用于在画布上绘图的环境

另, 你这里使用ctx.width的方式不能获取到画布的宽高,需要直接使用画布来获取宽高。 建议修改:

http://img1.sycdn.imooc.com//climg/5ce36e220001aabc15800332.jpg

如果帮助到了你, 欢迎采纳!

祝学习愉快~~~

  • 慕用0863198 提问者 #1
    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>canvas离屏</title> <style> #canvas2{ background-color: black; } </style> </head> <body> <canvas width="800px" height="600px" id="canvas">您的浏览器不支持canvas</canvas> <canvas width="800px" height="600px" id="canvas2">您的浏览器不支持canvas</canvas> <script> var canvas=document.getElementById("canvas"); var canvas=canvas.getContext("2d"); var canvas2=document.getElementById("canvas2"); var canvas2=canvas2.getContext("2d"); canvas2.font="50px sans-serif"; canvas2.textAlign="center"; canvas2.textBaseline="middle"; canvas2.fillStyle="rgba(255,255,255,0.3)" canvas2.fillText("==www.imooc.com=",400,450); var img=new Image(); img.src="http://img1.sycdn.imooc.com/climg//5aa6633400017bc704170220.jpg"; img.onload=function(){ canvas.drawImage(img,0,0,800,600); canvas.drawImage(canvas2,0,0,canvas2.width,canvas2.height,0,0,canvas.width,canvas.height); }; </script> </body> </html> 全部改完,还是没有效果
    2019-05-21 15:22:58
好帮手慕慕子 2019-05-21 18:55:29

同学你好, 你第一次粘贴的代码只需要修改老师截图红框圈起来的地方就可以了。 示例代码

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>canvas离屏</title>
    <style>
    #canvas2 {
        background-color: black;
    }
    </style>
</head>
<body>
    <canvas width="800px" height="600px" id="canvas">您的浏览器不支持canvas</canvas>
    <canvas width="800px" height="600px" id="canvas2">您的浏览器不支持canvas</canvas>
    <script>
    var canvas = document.getElementById("canvas");
    var ctx = canvas.getContext("2d");
    var canvas2 = document.getElementById("canvas2");
    var ctx2 = canvas2.getContext("2d");
    ctx2.font = "50px sans-serif";
    ctx2.textAlign = "center";
    ctx2.textBaseline = "middle";
    ctx2.fillStyle = "rgba(255,255,255,0.3)"
    ctx2.fillText("==www.imooc.com=", 400, 450);
    var img = new Image();
    img.src = "http://img1.sycdn.imooc.com/climg//5aa6633400017bc704170220.jpg";
    img.onload = function() {
        ctx.drawImage(img, 0, 0, 800, 600);
        ctx.drawImage(canvas2, 0, 0, canvas2.width, canvas2.height, 0, 0, canvas.width, canvas.height)
    };
    </script>
</body>
</html>

同学可以下去测试一下效果哦~~~

如果帮助到了你, 欢迎采纳!

祝学习愉快~~~

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
组件化思想开发电商网页 18版
  • 参与学习           人
  • 提交作业       467    份
  • 解答问题       4826    个

本路径带你通过系统学习HTML5、JavaScript、jQuery的进阶知识,不仅如此,还会学习如何利用组件化的思想来开发网页,知识点+案例,使得所学可以更好的得到实践。

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师