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

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

有用的话欢迎打赏~~~

相关推荐
凡科网小帆11 小时前
2026小程序商城平台哪家强,小程序商城平台选型怎么做
大数据·小程序·小程序商城平台
今日无bug15 小时前
HTML5 Canvas:从画图到游戏开发
前端·canvas
游戏开发爱好者815 小时前
App Store 上传 IPA 自动化,.p8 密钥认证与 CI/CD 接入实战
android·运维·ci/cd·小程序·uni-app·自动化·iphone
Greg_Zhong16 小时前
微信小程序 + 腾讯云人体分析:从 0 到 1 实现 AI 抠图打卡合照(细节待更新~)
人工智能·微信小程序·腾讯云·ai抠图-ai打卡拍照
游戏开发爱好者816 小时前
iOS 推送怎么配置,APNs 推送证书、设备库与群发
android·ios·小程序·https·uni-app·iphone·webview
snow@li16 小时前
小程序:200知识点/速查手册
小程序
不吃辣4901 天前
vibe coding | 如何做一个AI制图小程序?
人工智能·小程序·ai编程
laboratory agent开发1 天前
2026小程序服务商推荐:全域私域数字化工具选型深度解析
小程序
小码哥0681 天前
智慧物业管理系统开发详解:核心功能与源码开发优势
小程序·物业管理·物业系统
汤姆yu1 天前
基于微信小程序的方言转文字小程序的设计与实现
java·小程序·毕业设计·方言翻译