微信小程序跳

/**

* 画布文本换行绘制

* 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)

})

})

}

相关推荐
万维易源4 小时前
OCR身份证识别(正反面)_个人证照OCR识别_开放API接口使用指南
人工智能·小程序·数据分析·ocr
Lonely丶墨轩20 小时前
微信小程序
微信小程序
软工的小白20 小时前
HBuider中Uniapp去除顶部导航栏-小程序、H5、APP适用
小程序·uni-app
说私域1 天前
基于开源AI大模型与AI智能名片S2B2C商城小程序的线上活动执行优化研究
人工智能·小程序·开源·零售
诗句藏于尽头1 天前
小程序滚动条隐藏(uniapp版本)
笔记·小程序·uni-app
努力成为包租婆1 天前
微信小程序-van-uploader的preview-size
微信小程序·小程序
gewen_19881 天前
绿色版的notepad++怎么加入到右键菜单里
notepad++
雨中的风铃子1 天前
taro小程序如何实现大文件(视频、图片)后台下载功能?
小程序·音视频·taro
说私域2 天前
基于开源AI智能名片链动2+1模式S2B2C商城小程序的电商直播流量转化路径研究
人工智能·小程序·开源·零售
不会写代码的女程序猿2 天前
废品回收小程序:全链路数字化解决方案,赋能绿色未来
java·小程序·微信小程序定制开发