You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Canvas文本设置(0,0)坐标未显示在左上角?

Canvas fillText 坐标(0,0)文本出界的原因

这是因为Canvas绘制文本时,fillText的y坐标对应的是文本基线的位置,不是文本块的左上角。默认的文本基线是alphabetic(也就是字母的基线,比如小写字母x的底部水平线)。

当你把y设为0时,这条基线刚好落在Canvas的顶部边缘,而文本的主体部分(比如大写字母H的顶部)是在基线的上方,也就是y坐标小于0的区域——这部分超出了Canvas的可视范围,所以你看不到文本。

而设y=50时,基线在y=50的位置,你用的是30px的字体,文本高度大概在30px左右,所以文本顶部的y坐标大概在50-30=20的位置,完全处于Canvas内部,自然能正常显示。

如果想让文本左上角对齐到(0,0),可以手动修改文本基线为top,代码示例如下:

const canvElem = document.createElement("canvas");
canvElem.style.border = "1px solid black"
const ctx = canvElem.getContext("2d");
ctx.font = "30px Arial";
ctx.textBaseline = "top"; // 将基线设为文本顶部
ctx.fillText("Hello World", 0, 0);

document.body.appendChild(canvElem)

内容的提问来源于stack exchange,提问作者SopMe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 00:25:30