首页 > 其他分享 >js context.fillText 征对不同长度右边对齐的解决办法

js context.fillText 征对不同长度右边对齐的解决办法

时间:2024-04-07 15:58:46浏览次数:17  
标签:drawRightAlignedText text fillText js context 对齐 文本

在HTML5 Canvas中,要实现文本右对齐并且与不同长度文本互不重叠,可以通过测量文本宽度,并基于文本宽度设置x坐标来实现。

以下是一个简单的JavaScript函数,用于在Canvas中右对齐并且不重叠地绘制文本:

function drawRightAlignedText(context, text, x, y) {
    // 测量文本宽度
    const textWidth = context.measureText(text).width;
    // 设置x坐标为x值减去文本宽度,以实现右对齐
    const rightAlignedX = x - textWidth;
    // 使用fillText方法绘制文本
    context.fillText(text, rightAlignedX, y);
}

// 使用示例
const canvas = document.getElementById('myCanvas');
const context = canvas.getContext('2d');

// 设置文本样式
context.font = '20px Arial';
context.fillStyle = 'black';

// 调用函数绘制文本
drawRightAlignedText(context, 'Hello', 200, 20);
drawRightAlignedText(context, 'World', 200, 60);

在这个例子中,drawRightAlignedText函数接受contexttextxy作为参数,其中x是预期的文本开始的水平位置。函数内部,measureText方法用于计算文本的宽度,然后通过计算新的x坐标值来实现右对齐。最后,使用更新后的x坐标值调用fillText方法绘制文本。这样,不同长度的文本将根据它们自己的宽度右对齐,并且互不重叠。

标签:drawRightAlignedText,text,fillText,js,context,对齐,文本
From: https://www.cnblogs.com/tanweiwei/p/18119176

相关文章

  • NodeJs进阶开发、性能优化指南
    相信对于前端同学而言,我们去开发一个自己的简单后端程序可以借助很多的nodeJs的框架去进行快速搭建,但是从前端面向后端之后,我们会在很多方面会稍显的有些陌生,比如性能分析,性能测试,内存管理,内存查看,使用C++插件,子进程,多线程,Cluster模块,进程守护管理等等NodeJs后端的知识,在这里为大......
  • 解释一下package.json中的 "license": "ISC"是什么意思?
    在package.json文件中,"license":"ISC"表示该项目采用了ISC(InternetSystemsConsortium)许可协议。ISC许可协议是一种简明、宽松的开源软件许可证,它赋予了用户以下权利:自由使用:允许个人和组织在没有任何费用的情况下使用该软件,无论用于商业还是非商业目的。复制和分发:用户......
  • node.js常用指令
    1、node:启动Node.jsREPL(交互式解释器)。node2、node[文件名]:执行指定的JavaScript文件。nodeapp.js3、npminit:初始化一个新的Node.js项目,生成package.json文件。此命令会创建一个package.json文件,其中包含项目的名称、版本、描述等信息,并且可以选择添加一些默......
  • 基于 bindview.js + node + mysql 的简易记账系统
    该项目前端是基于bindview.js和bootcss,后端的基于node.js使用了express框架,数据库使用的mysql8 bindview: bronze-ding/bindview:Bindview.js,是一个使用虚拟DOM来创建真实DOM并提供了数据响应式的Javascript工具库(github.com)功能包括:增加,删除,修改,查询登录......
  • 如何在 Node.js 中使用 bcrypt 对密码进行哈希处理
    在网页开发领域中,安全性至关重要,特别是涉及到用户凭据如密码时。在网页开发中至关重要的一个安全程序是密码哈希处理。密码哈希处理确保明文密码在数据库受到攻击时也难以被攻击者找到。但并非所有的哈希方法都是一样的,这就是bcrypt突出之处所在。Node.js是一个流行的用于开......
  • 毕业设计程序开源 Spring Boot+vue.js+Echart+mysql +QT+halcon
    1.介绍 涉及到的技术框架比较多,但是也不难,相关技术需要些基础。目前还是个半成品,还有些数据图表和QT功能没做完善,本来想在前端部分做大数据分析平台的,后续有空再完善。下面简单介绍一下。源代码此处:链接:https://pan.baidu.com/s/1904kLOv4EDJkcBuuNe1jqw?pwd=6666 提取码:6......
  • P1337 [JSOI2004] 平衡点 / 吊打XXX
    原题链接题解朝合力方向位移一段距离,并逐渐减小这个位移距离,需要痛苦的调参code#include<bits/stdc++.h>usingnamespacestd;doublex=0,y=0;structnode{doublex,y,w;}pos[1005];intn;voidmoves(doublelen){doublefx=0,fy=0;for(inti=1;i<=n;i......
  • Golang context (上下文)是什么
    Golangcontext(上下文)是什么?原创 几颗酥 几颗酥 2024-03-1111:24 广西 1人听过介绍Context 是golang中十分重要的接口,用于定义 goroutine 中的上下文信息,context 常用于以下几种情况:数据传递:在多个 goroutine 中传递数据超时管理:通过配置超时时间,可以......
  • 5G网络建设【华为OD机试】(JAVA&Python&C++&JS题解)
    一.题目-5G网络建设现需要在某城市进行5G网络建设,已经选取N个地点设置5G基站,编号固定为1到N,接下来需要各个基站之间使用光纤进行连接以确保基站能互联互通,不同基站之间架设光纤的成本各不相同,且有些节点之间已经存在光纤相连,请你设计算法,计算出能联通这些基站的最小成本是......
  • 项目排期【华为OD机试】(JAVA&Python&C++&JS题解)
    一.题目项目组共有N个开发人员,项目经理接到了M个独立的需求,每个需求的工作量不同,且每个需求只能由一个开发人员独立完成,不能多人合作。假定各个需求直接无任何先后依赖关系,请设计算法帮助项目经理进行工作安排,使整个项目能用最少的时间交付。输入描述:第一行输入为M个需......