微信小程序canvas画布绘制文字自动换行

关键步骤介绍:

text为需要绘制的文本,通过换行符将text分割为words数组。

basic_height为第一行文本的高度。

get_canvas_row函数根据行宽限制将输入文本转化为不同的行,实现见下文。

text_size为设置的文本高度,h+text_size*j为每行待绘制文本的高度,绘制完成后更新h。

javascript 复制代码
var words = text.split('\n')
var h = basic_height
for(var i=0;i<words.length;++i){
    var rows = this.get_canvas_rows(ctx,words[i],canvas.width-10)
    for(var j=0;j<rows.length;++j){
        ctx.fillText(rows[j],10,h+text_size*j)
    }
    h += rows.length*text_size
}

get_canvas_rows函数参数介绍:

参数1:绘制的画布对象

参数2:绘制的文本

参数3:限制的文本宽度

关键步骤介绍:

步骤1:将输入文本拆分为单个字符数组。

步骤2:将字符数组依次赋予t_line,不断扩大t_line长度,直到达到文本宽度限制,将t_line作为一行文本赋予rows数组,t_line重新计数,直到字符数组最后一个字符。

步骤3:返回rows数组。

javascript 复制代码
    get_canvas_rows(ctx,line,maxWidth){
      var chars = line.split('')
      var rows = []
      var t_line = ''
      for(var i=0;i<chars.length;++i){
        var line_w = ctx.measureText(t_line+chars[i]).width    
        if(line_w>maxWidth){
          rows.push(t_line)
          t_line = chars[i]
        }else{
          t_line += chars[i]
        }
      }
      rows.push(t_line)
      return rows
    },

更多内容欢迎关注、评论、私信博主。

有用的话欢迎打赏~~~

相关推荐
是一碗螺丝粉7 小时前
拯救你的app/小程序审核!一套完美避开审核封禁的URL黑名单机制
前端·javascript·微信小程序
weixin_lynhgworld11 小时前
盲盒抽谷机小程序系统开发:从0到1的完整方法论
小程序
weixin_lynhgworld11 小时前
短剧小程序系统开发:赋能创作者,推动短剧艺术创新发展
小程序
德育处主任12 小时前
p5.js 3D 形状 "预制工厂"——buildGeometry ()
前端·javascript·canvas
一匹电信狗14 小时前
【C++】异常详解(万字解读)
服务器·c++·算法·leetcode·小程序·stl·visual studio
我叫黑大帅15 小时前
微信小程序分包:告别加载慢,像拆快递一样简单!
前端·微信小程序
两个月菜鸟18 小时前
vue+微信小程序 五角星
前端·vue.js·微信小程序
说私域1 天前
基于开源AI智能客服、AI智能名片与S2B2C商城小程序的微商服务优化及复购转介绍提升策略研究
人工智能·小程序
熬耶1 天前
Uniapp之微信小程序自定义底部导航栏形态
微信小程序·小程序·uni-app
IT毕设实战小研2 天前
基于Spring Boot校园二手交易平台系统设计与实现 二手交易系统 交易平台小程序
java·数据库·vue.js·spring boot·后端·小程序·课程设计