微信小程序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
    },

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

有用的话欢迎打赏~~~

相关推荐
说私域1 小时前
内容力重塑品牌增长:开源AI大模型驱动下的智能名片与S2B2C商城赋能抖音生态种草范式
人工智能·小程序·开源·零售
前端缘梦2 小时前
微信小程序登录方案实践-从账号体系到用户信息存储
前端·微信小程序
coding随想6 小时前
2025年小程序开发全解析:技术储备、行业趋势与实战案例
微信小程序
Nueuis13 小时前
微信小程序前端面经
前端·微信小程序·小程序
轩11519 小时前
实现仿中国婚博会微信小程序
微信小程序·小程序
知否技术1 天前
2025微信小程序开发实战教程(一)
前端·微信小程序
喝牛奶的小蜜蜂1 天前
个人小程序:不懂后台,如何做数据交互
前端·微信小程序·小程序·云开发
2501_918941051 天前
旅游微信小程序制作指南
微信小程序·小程序·旅游
全职计算机毕业设计1 天前
SpringBoot+Mysql实现的停车场收费小程序系统+文档
spring boot·mysql·小程序
邹荣乐1 天前
微信小程序动态tabBar实现:基于自定义组件,灵活支持不同用户角色与超过5个tab自由组合
前端·微信小程序·uni-app