javascript - HTML5 canvas - 字母居中?

标签 javascript html canvas

知道如何在 HTML5 Canvas 中完美地居中单个字母吗?

我有这段代码可以对单词中的每个字母进行动画处理。

interval = setInterval(function(){
  ctx.fillStyle = bgColor; 
  ctx.fillRect(0,0,128,128);
  var letter = $textInpt.val()[letterId];
  ctx.font = fontSize +"px "+font;
  ctx.fillStyle = fontColor;
  ctx.textAlign = "center";
  ctx.textBaseline="middle";
  var letterWidth = ctx.measureText(letter).width;
  ctx.fillText(letter, (canvas.width/2) - (letterWidth/4), (canvas.height/2) );
  letterId++;
  if (letterId>=$textInpt.val().length) letterId = 0;
},t);

这就是我得到的(字体 Arial,字体大小 80px)

enter image description here

FIDDLE:https://fiddle.jshell.net/ec265s1x/1/

最佳答案

只需从水平位置计算中删除 - (letterWidth/4) 即可:

ctx.fillText(letter, (canvas.width / 2), (canvas.height / 2));

fiddle :https://fiddle.jshell.net/ec265s1x/2/

关于javascript - HTML5 canvas - 字母居中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33365343/

相关文章:

html - CSS 子导航文本悬停颜色不起作用

javascript - HTML5 Canvas 上的多个事件监听器

javascript - 在 document.ready 和 onClick 上运行函数

javascript - 从应用程序授予对共享邮箱的访问权限

javascript - 如何在 Fabric.js 中填充两个对象的交集?

javascript - 将 url 的文本列表转换为可点击的 HTML 链接

java - Canvas 上的 Android Studio drawBitmap 不起作用

html - 如何在css3中制作曲线样式的菜单?

c# - 来自 C# 的 sexy.alert

javascript - 在 Selenium/Python 中清除 Chrome 浏览器日志