function getTrueLength(str) {
let trueLength = 0;
for (let x = 0; x < str.length; x++) {
trueLength += str.charCodeAt(x) > 128 ? 2 : 1;
}
return trueLength;
}
function cutString(str, textNum) {
let textIndex = str.length
let zjNum = 0;
for (let x = 0; x < str.length; x++) {
let num = str.charCodeAt(x) > 128 ? 2 : 1
if (zjNum + num < textNum) {
zjNum += num;
} else {
textIndex = x;
break;
}
}
return textIndex;
}
export function drawText(ctx, str, canvasW, dpi = 2, pleft = 2, textLength = 55, textAlign = "left", lineHeight = 35) {
ctx.textAlign = textAlign
for (let i = 0; getTrueLength(str) > 0; i++) {
let lastIndex = cutString(str, textLength);
if(textAlign === "center"){
pleft = canvasW / 2
}
ctx.fillText(str.substr(0, lastIndex).replace(/^\s+|\s+$/, ""), pleft, (30 + (lineHeight * i)) / dpi);
str = str.substr(lastIndex);
}
}
let dom = document.getElementById('canvas')
let ctx = dom.getContext("2d")
ctx.fillStyle = "#f00"
ctx.fillRect(0, 0, 360, 100)
ctx.fillStyle = "#000"
ctx.font = "13px sans-serif"
let str = "HTML5的canvas 元素使用JavaScript 在网页上绘制图像。画布是一个矩形区域,您可以控制其每一像素。canvas 拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。"
drawText(ctx, str, 360)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200731192609944.png)