小程序canvas生成海报如果绘制文字过长换行

 drawKernel(ctx, img_x, windowWidth, imgHeight) {
        var that = this;
        ctx.font = '16px PingFangSC-Semibod, sans-serif';
        ctx.setTextAlign('center');
        ctx.setFillStyle("#fff");
        // ctx.fillText(this.data.newCourseRecommend.title, img_x, imgHeight + 306);

        var str = this.data.newCourseRecommend.title;
        var height = imgHeight + 306;
        var lineWidth = 0;
        var lastIndex = 0; //每次开始截取的字符串的索引

        for (let i = 0; i < str.length; i++) {
            lineWidth += ctx.measureText(str[i]).width;
            if (lineWidth > 320) {
                that.drawFont(ctx, str.substring(lastIndex, i), height, img_x);
                height += that.data.lineHeight;
                lineWidth = 0;
                lastIndex = i;
                that.setData({
                    kernelHeight: height
                })
            }
            if (i == str.length - 1) { //绘制剩余部分
                that.drawFont(ctx, str.substring(lastIndex, i + 1), height, img_x);
            }
        }

    },
   drawFont: function(ctx, content, height, img_x) {
        ctx.fillText(content, img_x, height);
    },

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值