javascript - HTML Canvas 的measureText 还很遥远

标签 javascript html canvas

我试图在 HTML Canvas 上的字符串下画一条线,但从measureText返回的值是错误的。

代码如下:

var theCanvas =  document.querySelector('canvas')
var ctx = theCanvas.getContext("2d");
if (ctx) {
    var theString = "Drawing Text on a Canvas";
    ctx.font = "28px Verdana"
    ctx.fillText(theString, 20, 160);
    var textW = ctx.measureText(theString);
    ctx.beginPath();
    ctx.strokeStyle = "black";
    ctx.moveTo(20, 170);
    ctx.lineTo(Math.round(textW.width), 170);
    ctx.stroke();
}
<canvas width="600" height="200"></canvas>

该行没有一直到达字符串的末尾。

最佳答案

当您设置线的端点时,您忘记考虑偏移量。您的文本从 x = 20 开始,然后应在计算出的端点 + 20 处结束

而不是 (x,y) = Math.round(textW.width), 170,那么它应该是 (x,y) = Math.round(textW.width) + 20, 170

关于javascript - HTML Canvas 的measureText 还很遥远,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51341106/

相关文章:

Javascript 按类点击元素

javascript - 在 JavaScript 中查找 2 个 JSON 数组之间的匹配 JSON 项目,并将 CSS 应用于 UL 列表中的匹配项目

html - 试图从本地显示图像

javascript - 在 electron 的 vue-component 中打印 Canvas

javascript - 分层 Canvas 元素

javascript - 向弹出窗口添加 24 小时 cookie 使其根本不显示?

javascript - d3 强制布局在拖动时对齐网格

javascript - Flexbox:显示具有给定列数和行数的元素

html - 为什么负 z-index 会移除非静态定位元素的悬停功能?

javascript - Canvas 360 jquery 插件失败