ctx.fill('a');
比如这个"a"我怎么知道他的高度.
注意:是高度不是宽度.
或者说我如何做到避免文字超过canvas的可视范围(Y轴)
只做参考,不做回答。我测试了一下,感觉就用字体大小,基本能够作为高度来用,基线主要影响了定位:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
canvas {
border: 1px solid red;
}
</style>
</head>
<body>
<canvas id="main0" width="300" height="36"></canvas>
<canvas id="main1" width="300" height="36"></canvas>
<canvas id="main2" width="300" height="36"></canvas>
<canvas id="main3" width="300" height="36"></canvas>
<canvas id="main4" width="300" height="36"></canvas>
<canvas id="main5" width="300" height="36"></canvas>
<script>
const text = "text"
const baselines = ['top', 'hanging', 'middle', 'alphabetic', 'ideographic', 'bottom'];
baselines.forEach((baseline,index) =>{
let context = document.getElementById('main'+index).getContext('2d')
context.textBaseline =baseline
context.font = '36px serif'
let y = 36
if (baseline === 'top'||baseline==='hanging') {
y = 0
} else if (baseline === 'middle') {
y = 18
}
context.fillText('hello world', 0,y)
})
</script>
</body>
</html>
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答5.2k 阅读✓ 已解决
1 回答3.4k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
参考
https://developer.mozilla.org/zh-CN/docs/Web/API/CanvasRenderingContext2D/measureText
https://developer.mozilla.org/zh-CN/docs/Web/API/TextMetrics