1. /**
    2. * canvas文本换行
    3. * @param {*} ctx canvas对象
    4. * @param {*} str 绘制的文本
    5. * @param {*} leftWidth 距离左侧的距离
    6. * @param {*} initHeight 距离顶部的距离
    7. * @param {*} canvasWidth 文本的宽度
    8. * @returns
    9. */
    10. _drawText(ctx, str, leftWidth, initHeight, canvasWidth) {
    11. var chr = str.split("");//这个方法是将一个字符串分割成字符串数组
    12. var temp = "";
    13. var row = [];
    14. for (var a = 0; a < chr.length; a++) {
    15. if (ctx.measureText(temp).width < canvasWidth) {
    16. temp += chr[a];
    17. }
    18. else {
    19. a--; //这里添加了a-- 是为了防止字符丢失,效果图中有对比
    20. row.push(temp);
    21. temp = "";
    22. }
    23. }
    24. row.push(temp);
    25. //如果数组长度大于2 则截取前两个
    26. if (row.length > 2) {
    27. var rowCut = row.slice(0, 2);
    28. var rowPart = rowCut[1];
    29. var test = "";
    30. var empty = [];
    31. for (var a = 0; a < rowPart.length; a++) {
    32. if (ctx.measureText(test).width < canvasWidth) {
    33. test += rowPart[a];
    34. }
    35. else {
    36. break;
    37. }
    38. }
    39. empty.push(test);
    40. var group = empty[0] + "..."//这里只显示两行,超出的用...表示
    41. rowCut.splice(1, 1, group);
    42. row = rowCut;
    43. }
    44. for (var b = 0; b < row.length; b++) {
    45. ctx.fillText(row[b], leftWidth, initHeight + b * 40, canvasWidth);
    46. }
    47. },