微信小程序跳

/**

* 画布文本换行绘制

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

})

})

}

相关推荐
笨笨狗吞噬者10 小时前
【uniapp】微信小程序实现自定义 tabBar
前端·微信小程序·uni-app
2501_9339072110 小时前
如何选择性价比高的宁波小程序开发服务公司?
科技·微信小程序·小程序
阿珊和她的猫12 小时前
微信小程序 WXSS 与 CSS 的区别
css·微信小程序·notepad++
nhc08814 小时前
贵阳纳海川科技・棋牌室行业数字化解决方案
科技·微信小程序·小程序·软件开发·小程序开发
lizi6615 小时前
uniapp uview-plus 自定义动态验证
前端·vue.js·微信小程序
2501_9159090615 小时前
iOS 抓包不越狱,代理抓包 和 数据线直连抓包两种实现方式
android·ios·小程序·https·uni-app·iphone·webview
CHU72903516 小时前
让知识传递更顺畅:在线教学课堂APP的功能设计
前端·人工智能·小程序
AI前端老薛16 小时前
小程序中简单 Loading 效果关键帧动画
小程序
Greg_Zhong16 小时前
小程序从搭建到开发,涉及基础及必备知识总结
微信小程序
Greg_Zhong16 小时前
小程序中实现左侧分类与右侧子分类的联动效果.....
小程序·左侧分类与右侧分类联动