javascript - 如何在 HTML5 Canvas 中按小数点对齐文本

标签 javascript jquery html html5-canvas

假设我有三个数字

2.55

2353.45

232.44

我想在 Canvas 上书写,使三个数字按照小数点对齐,如下所示。

     2.55

  2353.45

   232.44

我知道 context.textAlign 属性,但它只有 5 个选项:左、右、中心、开始、结束。 我在互联网上搜索过,但找不到任何帮助。请帮忙。

最佳答案

您可以使用 measureText()方法及其返回的 TextMetrics对象,以便计算点之前数字的宽度。

var canvas = document.getElementById('canvas'),
  ctx = canvas.getContext('2d'),
  texts = [];
ctx.font = '14px sans-serif';
// fill our array with test-cases
for(var i=0; i<7; i++)
  texts.push(randLengthedNum() + '.' + randLengthedNum());

texts.forEach(drawText);

function drawText(str, i) {
  var left_part = str.split('.')[0],
    // get the width of the left part
    left_width = ctx.measureText(left_part).width,
    // the width of the dot
    dot_width = ctx.measureText('.').width,
    // places the '.' at center of the canvas
    x = (canvas.width / 2) - (left_width + (dot_width / 2));
  ctx.fillText(str, x, (i+1) * 20);
}

// return random lengthed numbers
function randLengthedNum(){
  return (Math.random()).toFixed(2+(Math.random()*8)|0).substr(2);
}
#canvas{
  border: 1px solid;
}
<canvas id="canvas"></canvas>

关于javascript - 如何在 HTML5 Canvas 中按小数点对齐文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49242942/

相关文章:

javascript - 如何在 JavaScript 中创建 aes-256 加密

javascript - Materialize CSS Material Box z-index 在与 Muuri Grid 一起使用时不起作用

javascript - Service Worker 未在 gh-pages 托管网站上注册

javascript - 将 <ol> append 到 <div> 元素的 <li> 会导致恼人的错误

html - 将按钮置于流体图像的中央

html - 并排放置div以填充容器而不固定宽度?

javascript - 在 jquery UI 扩展中使用 Html.EditorFor 生成的 ID

javascript - 如何仅将 jquery 应用于使用 if 语句选择的元素?

javascript - 使用 easyResponsiveTabs 创建动态选项卡

javascript - 如何通过内容查询获取图标?