微信小程序跳

/**

* 画布文本换行绘制

* 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 + textListi).width + x > maxWidth - 10) {

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

canvasContext.fillText(currText, x, textY)

currText = textListi

drawNum++

} else {

currText += textListi

}

}

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

canvasContext.fillText(currText, x, textY)

drawNum++

canvasContext.draw(true, _ => {

setTimeout(() => {

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

}, 100)

})

})

}

相关推荐
闹小艾10 分钟前
旅游小程序制作开发教程:零基础轻松制作一个旅游小程序
大数据·小程序·旅游
闹小艾9 小时前
舞蹈教培机构小程序零基础制作开发全流程教程
大数据·小程序
KYYXG10 小时前
2026年宁夏小程序定制开发公司全景评估
小程序
silvia_Anne14 小时前
微信小程序的登录与支付页面
微信小程序·小程序
无名J0kзr17 小时前
Web安全:小程序渗透测试
小程序
万岳科技系统开发18 小时前
互联网医院小程序搭建怎么做?从0开始建设完整平台
大数据·小程序
lpfasd12321 小时前
小程序审核避坑指南
小程序
Geek_Vison21 小时前
技术实践:保险健康APP引入第三方小程序实战,如何构建一个安全可控的沙箱环境~
android·安全·小程序·uni-app·mpaas
2501_915918411 天前
Python如何抓取HTTPS请求包的完整教程与代码示例
android·ios·小程序·https·uni-app·iphone·webview
用户573240037231 天前
从"陪聊机器人"变成"产品导航员"
微信小程序