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

uni-app canvas文本自动换行

封装

	// 填充自动换行的文本
	function fillFeedText({
		ctx, text, x, y, maxWidth, lineHeight, color, size
	}) {
		// 文本配置
		ctx.setFontSize(size);
		ctx.setFillStyle(color);

		// 计算文本换行宽高,换行逻辑
		const words = text.split('');
		let line = '';
		const lines = [];
		for (let i = 0; i < words.length; i++) {
			const word = words[i];
			const testLine = line + word;
			const metrics = ctx.measureText(testLine);
			if (metrics.width > maxWidth && i > 0) {
				lines.push(line);
				line = word;
			} else {
				line = testLine;
			}
		};

		// 填充文本
		lines.push(line);
		lines.forEach((line, index) => {
			ctx.fillText(line, x, y + ((index++) * lineHeight), maxWidth);
		});
	}

使用

// 文本集合
				const text = ["时间:" + Tool.now(), state.address]; // 需要填充两个文本
				text.forEach((line, index) => {
					fillFeedText({
						ctx,
						text: line,
						x: padding,
						y: state.height * 0.91 + ((index++) * lineHeight),
						maxWidth: state.width - padding,
						lineHeight,
						color: '#FFFFFF',
						size: 10
					})
				});

在这里插入图片描述

效果

在这里插入图片描述


http://www.kler.cn/a/321587.html

相关文章:

  • STM32 51单片机设计半导体制冷片温控设计
  • 苦等三年!金克斯大人回来了!
  • web实操5——http数据详解,request对象功能
  • 排序算法 -快速排序
  • 【Excel】身份证号最后一位“X”怎么计算
  • 【FFmpeg】FFmpeg 函数简介 ③ ( 编解码相关函数 | FFmpeg 源码地址 | FFmpeg 解码器相关 结构体 和 函数 )
  • 探索 Snowflake 与 Databend 的云原生数仓技术与应用实践 | Data Infra NO.21 回顾
  • 基于matlab语音滤波系统
  • 排序--希尔排序
  • C#入门教程
  • python 实现knn sklearn K近邻分类算法
  • 最新的iOS 18版本和Android 15版本系统分别升级了哪些功能?
  • [大语言模型] 情感认知在大型语言模型中的近期进展-2024-09-26
  • SLF4J报错log4j又报错
  • 新书推荐——《深度学习精粹与PyTorch实践》
  • 网络安全专业,在校大学生如何赚外快,实现财富自由?零基础入门到精通,收藏这一篇就够了
  • Linux下的基本指令/命令(二)
  • 面试小妙招:轻松绕过五大“坑”,展现真实自我
  • python中数据处理库,机器学习库以及自动化与爬虫
  • 设计模式-行为型模式-中介者模式
  • 【C#】DllImport的使用
  • 力扣19 删除链表的倒数第N个节点 Java版本
  • eBPF系列:开发流程
  • 【HarmonyOS】鸿蒙仿iOS线性渐变实现
  • 如何像专家一样修复任何 iPhone 上的“iPhone 已禁用”错误
  • 【Go】Go语言切片(Slice)深度剖析与应用实战