javascript - 为什么 Canvas.FillText 方法似乎使用了错误的坐标?

标签 javascript html canvas

我正在像这样将文本渲染到 HTML-Canvas 上:

https://www.w3schools.com/code/tryit.asp?filename=FMSIQUFFO5PL

如您所见,文本应该以 32, 32 呈现。但由于某些原因,该字符串显得太高了。

这是因为 Canvas 的坐标从 Canvas-Element 的左上角开始,而 String 的坐标从 String 的左下角开始?

我该如何解决这个问题,以便我可以准确地在我期望的位置呈现文本?

最佳答案

默认情况下,垂直文本对齐方式(基线)设置为“字母”,它使用文本的一般底部作为 y 坐标。

alphabetic

您可以通过设置 textBaseline 来更改此行为到“顶部”。

top

var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
ctx.font = "32px Arial";
ctx.textAlign = "left";
ctx.textBaseline = "top";   // change baseline property
ctx.fillText("Hello World", 32, 32);
<canvas id="myCanvas" style="border:1px solid #d3d3d3;"></canvas>

关于javascript - 为什么 Canvas.FillText 方法似乎使用了错误的坐标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47963844/

相关文章:

html - 将内联边框样式应用于表格单元格,因为里面有文本输入

javascript - 在动态生成的元素上提交时创建canvasjs

javascript - 如何通过 websockets 高效处理大量 HTML5 canvas 像素数据

javascript - Canvas 图像展平 - 组合 imageData

javascript - html5表单提交问题

javascript - 将具有本地状态的递归函数转换为使用堆栈

javascript - 组合多个 ||在做同时

html - 显示 block 元素的文本对齐在 ie5、6、7 中不起作用

android - 如何清理位图?

javascript - 无法通过其 ID 访问轮播