canvas 渲染多行文字

2018-12-04  本文已影响0人  未來Miral
/**
 * @param {Object} ctx canvas上下文
 * @param {String} text 需要输入的文本
 * @param {Number} x X轴起始位置
 * @param {Number} y Y轴起始位置
 * @param {Number} maxWidth 单行最大宽度
 * @param {Number} lineHeight 行高
 */
function drawText(ctx, text, x, y, maxWidth, lineHeight) {
    let canvas = ctx.canvas;
    let arrText = text.split('');
    let line = '';
    for (let n = 0; n < arrText.length; n++) {
        let testLine = line + arrText[n];
        let metrics = ctx.measureText(testLine);
        let testWidth = metrics.width;
        if (testWidth > maxWidth && n > 0) {
            ctx.fillText(line, x, y);
            line = arrText[n];
            y += lineHeight;
         } else {
            line = testLine;
         }
    }
    ctx.fillText(line, x, y);
}
上一篇下一篇

猜你喜欢

热点阅读