我正在像这样将文本渲染到 HTML-Canvas 上:
https://www.w3schools.com/code/tryit.asp?filename=FMSIQUFFO5PL
如您所见,文本应该以 32, 32 呈现。但由于某些原因,该字符串显得太高了。
这是因为 Canvas 的坐标从 Canvas-Element 的左上角开始,而 String 的坐标从 String 的左下角开始?
我该如何解决这个问题,以便我可以准确地在我期望的位置呈现文本?
最佳答案
默认情况下,垂直文本对齐方式(基线)设置为“字母”,它使用文本的一般底部作为 y 坐标。
您可以通过设置 textBaseline
来更改此行为到“顶部”。
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/