微信小程序 - canvas实现多行文本 ,实现文本断行
1.canvas绘制文本坑点
绘制的文本不管多长,永远只有一行,不会断行。
2.解决思路
根据每行文本字数来断行,超出的就向下排列。
由于 canvas绘制文本的语法如下:
context.fillText(text,x,y,maxWidth);
所以需要知道文本的起始坐标(x,y)
3.具体分析

4.实现
说明:需返回多行文本高度,因为canvas的绘制都是通过坐标完成,方便绘制后面的内容取纵坐标
/**
* @func 绘制多行文本
* @desc 一个带参数的函数
* @param ctx - 参数ctx
* @param text - 文本
* @param pointX - 文本左上角x坐标位置
* @param pointY - 左上角y坐标位置
* @param rowStrnum - 每行多少个字
* @param lineHeight - 行高
*
*/
drawRowtext(ctx, text, pointX, pointY, rowStrnum, lineHeight) {
var len = text.length;
var n = len / rowStrnum;
// console.log(n);
var n1 = Math.ceil(n);//向上取整
ctx.setFillStyle('#906338');
ctx.setTextBaseline('top')
for (var i = 0; i < n1; i++) {
ctx.fillText(text.slice(i * rowStrnum, ((i + 1) * rowStrnum)+1), pointX, pointY + i * lineHeight);
}
return n * lineHeight;
},
5.后记
之前的随笔 《微信小程序canvas绘制,并且实现图片保存》https://www.cnblogs.com/lingXie/p/10609530.html 也有绘制多行文本的方法,不过是网上找的,总是或多或少有的问题,所以修改了哈。
微信小程序 - canvas实现多行文本 ,实现文本断行的更多相关文章
- 微信小程序-canvas绘制文字实现自动换行
在使用微信小程序canvas绘制文字时,时常会遇到这样的问题:因为canvasContext.fillText参数为 我们只能设置文本的最大宽度,这就产生一定的了问题.如果我们绘制的文本长度不确定或者 ...
- 微信小程序--canvas画布实现图片的编辑
技术:微信小程序 概述 上传图片,编辑图片大小,添加文字,改变文字颜色等 详细 代码下载:http://www.demodashi.com/demo/14789.html 概述 微信小程序--ca ...
- 技术博客--微信小程序canvas实现图片编辑
技术博客--微信小程序canvas实现图片编辑 我们的这个小程序不仅仅是想给用户提供一个保存和查找的平台,还希望能给用户一个展示自己创意的舞台,因此我们实现了图片的编辑部分.我们对对图片的编辑集成了很 ...
- 原创:WeZRender:微信小程序Canvas增强组件
WeZRender是一个微信小程序Canvas增强组件,基于HTML5 Canvas类库ZRender. 使用 WXML: <canvas style="width: 375px; h ...
- 微信小程序-form表单-获取用户输入文本框的值
微信小程序-form表单-获取用户输入文本框的值 <input name='formnickname' class="textarea" placeholder=" ...
- 微信小程序 canvas 字体自动换行(支持换行符)
微信小程序 canvas 自动适配 自动换行,保存图片分享到朋友圈 https://github.com/richard1015/News 微信IDE演示代码https://developers.w ...
- 微信小程序canvas生成并保存图片
---恢复内容开始--- 微信小程序canvas生成并保存图片,具体实现效果如下图 实现效果需要做以下几步工作 一.先获取用户屏幕大小,然后才能根据屏幕大小来定义canvas的大小 二.获取图 ...
- 微信 小程序 canvas
测试手机为IPHONE6,开发者工具版本0.10.102800.开发者工具0.11.112301版本也一样 微信小程序里的canvas 非 h5 canvas有很多不一样的地方,以下把微信小程序的ca ...
- 微信小程序 canvas 绘图问题总结
业务中碰到微信小程序需要生成海报进行朋友圈分享,这个是非常常见的功能,没想到实际操作的时候花了整整一天一夜才搞好,微信的 canvas 绘图实在是太难用了,官方快点优化一下吧. 业务非常简单,只需要将 ...
- 【微信小程序canvas】实现小程序手写板用户签名(附代码)
工作中公司业务需要的微信小程序用户签字功能 先看效果图: wxml: <view class="wrapper"> <view class="handB ...
随机推荐
- MyFreeMarkerConfigurer
public class MyFreeMarkerConfigurer extends FreeMarkerConfigurer { @Override public void afterProper ...
- C语言中的malloc、new、memset函数解析
1. malloc 在window下,malloc的函数原型: extern void *malloc(unsigned int num_bytes); 头文件: #include<malloc ...
- [PHP]流程控制的替代语法:endif/endwhile/endfor使用介绍
我们经常在wordpress一类博客程序的模板里面看到很多奇怪的PHP语法,比如: 代码如下: <?php if(empty($GET_['a'])): ?> <font color ...
- ap,路由器,交换机
第二段测试实习啦,今天看到测试用例里边的AP愣了一下哈哈哈
- Maven使用tomcat7-maven插件部署项目问题
Cannot invoke Tomcat manager: Connection refused: connect -> [Help 1] 检查tomcat-users.xml的用户配置,用户权 ...
- redis底层数据结构之简单动态字符串(SDS)
简单动态字符串(simple dynamic string,SDS) redis使用C语言编写的,但是redis的字符串却不是C语言中的字符串(以空字符'\0'结尾的字符数组),redis定义了一种简 ...
- shell脚本自动过滤尝试多次连接ip并添加到系统黑名单
#!/bin/bash cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c | awk '{{ print $2 " ...
- 新手搭建Git与项目整合
新手搭建Git,将代码托管到码云 如果你还没有使用过Git,首先先去https://gitee.com/注册一个自己的账户,然后在https://git-scm.com/下载一个客户端(提交代码到码云 ...
- 一条命令删除所有静态路由华为eNSP
在系统视图下执行undo ip route-static all,可以一次删除所有静态路由,包括缺省路由. 默认状态: 执行 undo ip route-static all
- 南大ics-pa/PA1.1过程及感想
1.1 一.在红白模拟器上运行超级马里奥游戏 1.将游戏rom文件mario.nes移至~/ics2022/fceux-am/nes/rom文件下,并回到~/ics2022/fceux-am下执行ma ...