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

小程序使用Canvas设置文字竖向排列

 在需要使用的js页面引入js文件,传入对应参数即可

/**
*     文本竖向排列
*/
function drawTextVertical(context, text, x, y) {var arrText = text.split('');var arrWidth = arrText.map(function (letter) {return 26; // 字体间距,需要自定义可以自己加参数,根据传入参数进行设置});var align = context.textAlign;var baseline = context.textBaseline;if (align == 'left') {x = x + Math.max.apply(null, arrWidth) / 2;} else if (align == 'right') {x = x - Math.max.apply(null, arrWidth) / 2;}if (baseline == 'bottom' || baseline == 'alphabetic' || baseline == 'ideographic') {y = y - arrWidth[0] / 2;} else if (baseline == 'top' || baseline == 'hanging') {y = y + arrWidth[0] / 2;}context.textAlign = 'center';context.textBaseline = 'middle';// 开始逐字绘制arrText.forEach(function (letter, index) {// 确定下一个字符的纵坐标位置var letterWidth = arrWidth[index];// 是否需要旋转判断var code = letter.charCodeAt(0);if (code <= 256) {context.translate(x, y);// 英文字符,旋转90°context.rotate(90 * Math.PI / 180);context.translate(-x, -y);} else if (index > 0 && text.charCodeAt(index - 1) < 256) {// y修正y = y + arrWidth[index - 1] / 2;}context.fillText(letter, x, y);// 旋转坐标系还原成初始态context.setTransform(1, 0, 0, 1, 0, 0);// 确定下一个字符的纵坐标位置var letterWidth = arrWidth[index];y = y + letterWidth;});// 水平垂直对齐方式还原context.textAlign = align;context.textBaseline = baseline;
}module.exports = {drawTextVertical: drawTextVertical
}

示例:

引入js

 

传入参数

 

页面显示

http://www.lryc.cn/news/358549.html

相关文章:

  • GPT-4o:重塑人机交互的未来
  • 大语言模型拆解——Tokenizer
  • Linux自动挂载服务autofs讲解
  • 堆结构知识点复习——玩转堆结构
  • JS数据类型运算符标准库
  • 单片机之从C语言基础到专家编程 - 4 C语言基础 - 4.13数组
  • 【码银送书第二十期】《游戏运营与出海实战:策略、方法与技巧》
  • String 类
  • Chromebook Plus中添加了Gemini?
  • Git Large File Storage (LFS) 的安装与使用
  • 使用国产工作流引擎,有那些好处?
  • 掌握 Go 语言:使用 net/http/httptrace 包优化HTTP请求
  • 探秘Flask中的表单数据处理
  • java —— 包装类及拆箱、装箱
  • 运算符重载(下)
  • 杭州服务器的性能如何?
  • linux centos nfs挂载两台服务器挂载统一磁盘目录权限问题
  • STL:string
  • 贷款借钱平台 小额贷款系统开发小额贷款源码 贷款平台开发搭建
  • 软设之算法的效率
  • 前端开发(2)--HTML常用的标签
  • 任何图≌自己这一几何最起码常识推翻直线公理让R外标准实数一下子浮出水面
  • js 纯前端实现数组分页、列表模糊查询、将数组转成formdata格式传给接口
  • elasticsearch有什么用
  • iOS自动连接已知Wi-Fi功能的实现
  • 编辑任何场景! 3DitScene:通过语言引导的解耦 Gaussian Splatting开源来袭!
  • CCIG 2024:合合信息文档解析技术突破与应用前景
  • 关于TeamSpeak3-网易音乐机器人的基础使用方法(胎教级教程)
  • 看广告赚金币提现小游戏app开发源码
  • 【vue】@、@/、../和./的区别