当前位置: 首页 > news >正文

微信小程序跳

/**

     * 画布文本换行绘制

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

            })

        })

    }

相关文章:

  • oracle json笔记
  • 线程同步与互斥(下)
  • 关于 Spring Boot + Vue 前后端开发的打包、测试、监控、预先编译和容器部署 的详细说明,涵盖从开发到生产部署的全流程
  • spring 依赖注入的好处
  • vscode远程连接树莓派报错> Host key verification failed.> 过程试图写入的管道不存在。
  • mysql-innodb_autoinc_lock_mode=2 和innodb_autoinc_lock_mode=1可能引发的问题
  • CISP-PTE WEB题通关记录
  • 基于Kubeadm实现K8S集群扩缩容指南
  • 第十一届 蓝桥杯 嵌入式 省赛
  • cache更新策略
  • Redis Java 客户端 之 Jedis
  • BERT 模型是什么
  • SQL ​​主键(Primary Key)
  • 什么是具身智能?其发展五大趋势预测
  • 【C++游戏引擎开发】第12篇:GLSL语法与基础渲染——从管线结构到动态着色器
  • 循环神经网络 - 长短期记忆网络的门控机制
  • [原创](现代C++ Builder 12指南): 如何使用异常(try catch)?
  • 从 SaaS 到 MCP:构建 AI Agent 生态的标准化服务升级之路
  • 基于微信小程序的校园跑腿系统的设计与实现
  • MV-DLS600P激光振镜立体相机(MV-DLS600P)重要参数解析
  • 在什么网站上做兼职靠谱/推广如何做网上引流
  • 新疆建设云网站/寻找客户资源的网站
  • 想学做网站可以自学吗/百度公司招聘信息
  • 大连做公司网站/宁波seo推广优化公司
  • 怎么做属于自己的售卡网站/手机网站制作
  • 湖北网络营销推广怎么做/西安seo优化培训