如何使用 JavaScript 查找 HTML canvas 中文本的高度?


概述

canvas 是一个 HTML 元素,允许我们在网页上显示任何类型的自定义文本或图形。canvas 使图形可编辑,我们可以创建自己的自定义文本或设计。

可以使用 `` 标签将 canvas 元素添加到 HTML 中,或者可以使用 JavaScript 通过 'document' 对象的 'createElement' 方法添加它。由于我们需要查找 HTML canvas 中写入的文本的高度,我们可以使用 "textMetrics" 对象的 measureText() 属性来计算文本的高度。

语法

下面显示了用于查找文本高度的语法,其中我们参考了 canvas 的 getContext() 属性。

var fM = ctx.measureText("A");
var txtH = fM.actualBoundingBoxAscent + fM.actualBoundingBoxDescent;
  • measureText() − 上述语法中的 measureText() 被称为 textMetrics 对象的属性。在 measureText() 中,传递的参数是具有最大高度的字符,例如 measureText("C")。

  • actualBoundingBoxAscent − 这是 measureText() 属性的方法,它返回文本在垂直方向上基线以上的高度。通过此方法,我们可以获得基线上方字符的高度。

  • actualBoundingBoxDescent − 这是 measureText() 属性的方法,它返回文本在垂直向下方向上基线以下的高度。通过此方法,我们可以获得基线下方字符的高度。

算法

  • 步骤 1 − 在文本编辑器中创建一个 HTML 文件,并将 HTML 基本结构添加到文件中。

  • 步骤 2 − 现在使用 HTML `` 标签创建一个 canvas,其 id 名称为 "textCanvas"。还要向 canvas 标签添加高度和宽度属性。

<canvas id="textCanvas" width="300" height="150"></canvas>
  • 步骤 3 − 现在将 script 标签添加到 body 标签。

<script></script>
  • 步骤 4 − 现在访问 canvas 标签并将其存储在一个变量中。

let canva = document.getElementById("textCanvas");
  • 步骤 5 − 使用 getContext() 将文本添加到 2d canvas。

let ctx = canva.getContext("2d");
  • 步骤 6 − 现在将 fontSize 和 fontFamily 存储到变量中。

var f = "20px Arial";
ctx.font = f;
  • 步骤 7 − 现在将任何文本存储到变量中。

var txt = "tutorialspoint.com";
  • 步骤 8 − 创建 measureText() 的引用并存储在一个变量中。

var fM = ctx.measureText("A");
  • 步骤 9 − 现在使用 actualBoundingBoxAscent 和 actualBoundingBoxDescent 方法,并将它们的返回值相加,并将其存储在一个变量中。

var txtH = fM.actualBoundingBoxAscent + fM.actualBoundingBoxDescent;
  • 步骤 10 − 使用 fillText() 方法将高度和文本添加到 canvas。

ctx.fillText("Text: " + txt, 5, 40)
ctx.fillText("Height: " + txtH, 5, 80)

示例

在这个例子中,我们将使用 HTML 创建一个 canvas,并使用 JavaScript 将文本添加到 canvas。然后,我们将使用 textCentrics 属性来计算文本的高度。

<html>
<head>
   <title> find the height of text </title>
   <style>
      canvas {
         border: 2px solid black;
      }
   </style>
</head>
<body>
   <h3> Finding height of the text </h3>
   <canvas id="textCanvas" width="300" height="150"></canvas>
   <script>
      let canva = document.getElementById("textCanvas");
      let ctx = canva.getContext("2d");

      var f = "20px Arial";
      ctx.font = f;

      var txt = "tutorialspoint.com";
      var fM = ctx.measureText("A");

      var txtH = fM.actualBoundingBoxAscent + fM.actualBoundingBoxDescent;

      ctx.fillText("Text: " + txt, 5, 40)
      ctx.fillText("Height: " + txtH, 5, 80)
   </script>
</body>
</html>

下图显示了输入文本的高度。下图中带有黑色边框的框是包含文本“tutorialspoint.com”且高度为“15”的 canvas。这里计算了基线上方的高度加上基线下方的字符高度,并将它们相加以获得总文本的高度。

结论

此功能有助于网页布局的 DOM 操作。这有助于创建动态过渡效果和动画。正如我们使用 fillText() 方法一样,我们可以传递三个参数:要添加到 canvas 的文本,第二个参数是 canvas 水平方向上的 x 坐标(传递数值),第三个参数是垂直方向的 y 坐标(设置数值)。

更新于:2023年10月13日

2K+ 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告