• canvas海报


    分享海报

        <canvas id="myCanvas"></canvas>
    
        <script>
        let c = document.querySelector('#myCanvas');
        let cxt = c.getContext('2d')// 创建context对象
    
        // 设置myCanvas的宽高
        c.width = 320;
        c.height= 580;
    
        // 绘制一个矩形, 用来做全局背景颜色
        cxt.fillStyle = '#999';// fillstyle方法将其染成红色
        cxt.fillRect(0,0,c.width,c.height)// fillRect方法创建一个矩形:x坐标,y坐标,宽度,高度;
    
        // 绘制图片到myCanvas里
        let img = new Image()
        img.src = './img/bg1.png'
    
        // 防止图片没有加载完成就执行了drawImage
        setTimeout(()=>{
            cxt.drawImage(img,20,20,280,280) // x坐标,y坐标,宽度,高度
        },100)
    
    
        cxt.fillStyle="#333";
        cxt.font = "15px bold 黑体";
        var str = "为老人、小孩等各年龄段用户提供线上+线下、监测+分析干预的新型医疗健康服务,成为亿万家庭的健康守门人"
        cxt.textBaseline = "middle";
        cxt.textAlign = "left";
        var lineWidth = 0;
    
        var canvasWidth = 280;//一行文字占用的宽度
        var initHeight=320;//绘制字体距离canvas顶部初始的高度
        var lastSubStrIndex= 0; //每次开始截取的字符串的索引
        for(let i=0;i<str.length;i++){ 
            // debugger
            lineWidth+=cxt.measureText(str[i]).width; 
            if(lineWidth>canvasWidth){  
                cxt.fillText(str.substring(lastSubStrIndex,i),20,initHeight);//绘制截取部分
                initHeight+=20; //20为字体的高度
                lineWidth=0;
                lastSubStrIndex=i;
            } 
            if(i==str.length-1){ //绘制剩余部分
                cxt.fillText(str.substring(lastSubStrIndex,i+1),20,initHeight);
            }
        }
    
        // Canvas底部背景色
        cxt.fillStyle = "green"; // fillStyle方法将其染成红色
        cxt.fillRect(20,380,150,40); // fillRect方法是创建一个矩形,x坐标、y坐标、宽度、高度
        // 安福星底部背景色
        cxt.fillStyle = "#ff0036"; // fillStyle方法将其染成红色
        cxt.fillRect(220,380,80,40); // fillRect方法是创建一个矩形,x坐标、y坐标、宽度、高度
    
         // 绘制Canvas底部值
         cxt.fillStyle="#fff";
        cxt.font = "normal bold 15px 黑体";
        var str_quan = "Canvas海报"
        cxt.textBaseline = "middle";
        cxt.textAlign = "left";
        cxt.fillText(str_quan,220,400);// 填充文字
    
    
        // 绘制安福星底部值
        cxt.fillStyle="#fff";
        cxt.font = "normal bold 20px 黑体";
        var str_price = "安福星"
        cxt.textBaseline = "middle";
        cxt.textAlign = "left";
        cxt.fillText(str_price,26,400);// 填充文字
    
       
    
        // 绘制二维码
        var qrcode = new Image()
        qrcode.src = "./img/bg2.png" // 二维码图片路径
    
        // 为了防止图片还没加载完成就执行drawImage,需要延迟10ms再执行drawImage
        setTimeout(function(){
            cxt.drawImage(qrcode,95,440,130,130);// 图片路径 , x坐标, y坐标,图片宽,图片高 
        },300)
        
    </script>
    
  • 相关阅读:
    用vuex实现购物车功能
    Vue引入Jquery和Bootstrap
    emWin使用外部SRAM的方法
    (四)u-boot2013.01.01 for TQ210:《mkconfig分析》
    (三)u-boot2013.01.01 for TQ210:《mkconfig分析》
    Vmware出现报错The VMware Authorization Service is not running.之后无法上网解决
    Uva 10596
    Uva 10305
    要检测两个C文件的代码的抄袭情况
    MFC简易画图
  • 原文地址:https://www.cnblogs.com/cl1998/p/13938139.html
Copyright © 2020-2023  润新知