console
function angleToRadian(angle) {
return angle * Math.PI / 180
}
function draw($canvas, text, color, angle, fontSize) {
const $ctx = $canvas.getContext('2d')
$ctx.font = `${fontSize}px PingFangSC`
const textWidth = $ctx.measureText(`${text}`).width
const textHeight = fontSize * 1.4
const canvasWidth = textHeight * Math.abs(Math.sin(angleToRadian(angle))) + textWidth * Math.abs(Math.cos(angleToRadian(angle)))
const canvasHeight = textWidth * Math.abs(Math.sin(angleToRadian(angle))) + textHeight * Math.abs(Math.cos(angleToRadian(angle)))
$canvas.width = canvasWidth
$canvas.height = canvasHeight
$ctx.translate(canvasWidth / 2, canvasHeight / 2)
$ctx.rotate(-angleToRadian(angle))
$ctx.font = `${fontSize}px PingFangSC`
$ctx.fillStyle = color
$ctx.textBaseline = 'middle'
$ctx.textAlign = 'center'
$ctx.fillText(text, 0, 0)
}
draw(
document.querySelector('#canvas'),
'| 国 · 国 |',
'blue',
15,
20
)
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>水印 Canvas 绘制 Demo</title>
</head>
<body>
<canvas id="canvas"></canvas>
</body>
</html>
#canvas {
border: 1px solid red;
}