微信小程序跳

/**

* 画布文本换行绘制

* canvasContext 画布实例

* text 要写入的文本

* x 初始x轴位置

* y 初始y轴位置

* ySpacing 换行后,每行直接的间隔

* maxWidth 此文本写入画布的最大宽度,超过此宽度就换行

* color 文本颜色

* size 文本字体大小

* align 文本方向 left rigt center 额一直搞不清楚这个方向是怎么个原理

* @returns { textY 绘制最后一行文本的Y轴结束坐标,drawNum 画布本次绘制了几次 }

*/

canvasTextNewlinedraw (options) {

const { canvasContext, text = '', x = 0, y = 0, ySpacing = 0, maxWidth = 0, color, size, align } = options

return new Promise((resolve, reject) => {

size && canvasContext.setFontSize(size)

align && canvasContext.setTextAlign(align)

color && canvasContext.setFillStyle(color)

const textList = text.split('')

let currText = '', textY = 0, drawNum = 0

for (let i = 0; i < textList.length; i++) {

if (canvasContext.measureText(currText + textList[i]).width + x > maxWidth - 10) {

textY += textY === 0 ? y : ySpacing

canvasContext.fillText(currText, x, textY)

currText = textList[i]

drawNum++

} else {

currText += textList[i]

}

}

textY = textY === 0 ? y : textY + ySpacing

canvasContext.fillText(currText, x, textY)

drawNum++

canvasContext.draw(true, _ => {

setTimeout(() => {

resolve({ y: textY, res: _, drawNum })

}, 100)

})

})

}

相关推荐
码农客栈几秒前
小程序学习(十三)之请求和上传文件拦截器
小程序·uni-app
风景的人生28 分钟前
小程序接收respose中的数组
前端·微信小程序·小程序
说私域30 分钟前
分享经济视角下社会化众包与众筹的创新路径——链动2+1模式AI智能名片小程序的融合应用
人工智能·小程序·流量运营·私域运营
谷哥的小弟35 分钟前
图片上传自动人脸打码:微信小程序隐私保护实践
微信小程序·人脸识别·图片上传·马赛克·隐私保护·自动打码
夏天想39 分钟前
微信小程序使用pinia-plugin-persistedstate报错找不到localstorage
微信小程序·小程序
sheji341613 小时前
【开题答辩全过程】以 基于微信小程序的社区养老积分银行系统的设计为例,包含答辩的问题和答案
微信小程序·小程序
CHU72903514 小时前
在线教学课堂APP前端功能:搭建高效线上教学生态
前端·人工智能·小程序·php
2501_9160074720 小时前
跨平台 App 安全,Flutter、RN、Unity、H5 混合应用加固
android·ios·小程序·https·uni-app·iphone·webview
焦糖玛奇朵婷20 小时前
就医陪诊小程序|从软件开发视角看实用度✨
java·大数据·jvm·算法·小程序
CHU72903521 小时前
智慧陪伴新选择:陪诊陪护预约小程序的暖心功能解析
java·前端·小程序·php