html canvas 如何实现文字绘制换行 (wrap)

 时间:2026-02-15 12:34:42

1、fillText函数并没有换行这个选项,换行实际上需要自行计算实现。因此,第一步是对要绘制的文本分离为token。

使用正则表达式/([a-zA-Z0-9]+)/g作为spliter可以得到初步分离结果。

html canvas 如何实现文字绘制换行 (wrap)

2、分离的目的是确定所有可以断开的位置,而中文一般是可以在任意位置断开的,因此,配合map, concat等函数,实现英文数字连起来,而中文汉字都断开的效果。

html canvas 如何实现文字绘制换行 (wrap)

3、准备好token列表,就可以准备绘制多行文本了。首先设置canvas的context (2D) 的样式。

html canvas 如何实现文字绘制换行 (wrap)

4、接着以一行或者两行为例(多行情形完全类似),设置firstLine,secondLine变量备用。

html canvas 如何实现文字绘制换行 (wrap)

5、遍历每个token,尝试把该token加到第一行,如果加上token后,用mesureText测试宽度超过给定阈值,就结束这一行,余下的加到下一行。

html canvas 如何实现文字绘制换行 (wrap)

6、绘制的时候,统计产生的行数,调整行高,绘制位置,再进行绘制。

html canvas 如何实现文字绘制换行 (wrap)

7、最终效果如图,当文字超过单行长度自动显示为两行。

html canvas 如何实现文字绘制换行 (wrap)

1、fillText函数并没有换行这个选项,换行实际上需要自行计算实现。因此,第一步是对要绘制的文本分离为token。使用正则表达式/([a-zA-Z0-9]+)/g作为spliter可以得到初步分离结果。


2、分离的目的是确定所有可以断开的位置,而中文一般是可以在任意位置断开的,因此,配合map, concat等函数,实现英文数字连起来,而中文汉字都断开的效果。
3、准备好token列表,就可以准备绘制多行文本了。首先设置canvas的context (2D) 的样式。
4、接着以一行或者两行为例(多行情形完全类似),设置firstLine,secondLine变量备用。
5、遍历每个token,尝试把该token加到第一行,如果加上token后,用mesureText测试宽度超过给定阈值,就结束这一行,余下的加到下一行。
6、绘制的时候,统计产生的行数,调整行高,绘制位置,再进行绘制。
7、最终效果如图,当文字超过单行长度自动显示为两行。
  • 饥荒猎犬袭击怎么办
  • 饥荒猴子怎么杀
  • 饥荒夏天怎么降温?
  • 饥荒如何建造科学机器
  • 饥荒海滩怎么解锁铲子 饥荒海难如何制作铲子
  • 热门搜索
    去韩国旅游 香港旅游攻略自由行 西昌旅游攻略 斯里兰卡旅游 柳州旅游 西安旅游地图 旅游公司排名 贵阳旅游景点 海南国际旅游岛 铜川旅游