南烟i 2018-06-26 03:59 采纳率: 13.3%
浏览 2584
已结题

html5 canvas 画一个矩形,文字超出矩形怎样自动换行?

DrawingManager.prototype.showLayerTitle = function (layer, isSelected) {
let x, y;
if (layer.p1) {

    x = layer.p1.x1 + layer.x + 5, y = layer.p1.y1 + layer.y + 5;
} else {
    x = layer.x + 5, y = layer.y + 5;
}

this.$canvas.drawText({
    name: layer.name + "_title",
    layer: true,
    cursors: {
        mouseover: 'hand'
    },
    fromCenter: false,
    fillStyle: '#9cf',
    strokeStyle: isSelected ? '#03e2dc' : '#d3e2dc',
    strokeWidth: 1,   //笔划宽度
    shadowColor: 'black',  //阴影颜色
    shadowBlur: 2,   //阴影模糊
    shadowOffsetX: 2,
    shadowOffsetY: 2,
    groups: ['grpTitle'],
    x: x, y: y,
    fontSize: isSelected ? 16 : 14,
    // fontFamily: 'Verdana, sans-serif',
    text: layer.data.title === '' ? '...':layer.data.title,
    click: () => {
        if(this.canvasDrawingModel === 0){
            saveCategory(layer.data.title, layer.name);
        }
    }
})

};
如何让text换行

  • 写回答

2条回答 默认 最新

  • threenewbee 2018-06-26 04:29
    关注
     var c=document.getElementById("canvas"); 
    var ctx=c.getContext("2d"); 
    ctx.fillStyle="#E992B9";
    ctx.lineWidth=1; 
    var str = "假如生活欺骗了你,请不要悲伤!thank you!"
    var lineWidth = 0;
    var canvasWidth = c.width;//计算canvas的宽度
    var initHeight=15;//绘制字体距离canvas顶部初始的高度
    var lastSubStrIndex= 0; //每次开始截取的字符串的索引
    for(let i=0;i<str.length;i++){ 
        lineWidth+=ctx.measureText(str[i]).width; 
        if(lineWidth>canvasWidth){  
            ctx.fillText(str.substring(lastSubStrIndex,i),0,initHeight);//绘制截取部分
            initHeight+=20;//20为字体的高度
            lineWidth=0;
            lastSubStrIndex=i;
        } 
        if(i==str.length-1){//绘制剩余部分
            ctx.fillText(str.substring(lastSubStrIndex,i+1),0,initHeight);
        }
    }
    

    https://blog.csdn.net/lishihong108/article/details/52483867?ref=myread

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路
  • ¥15 MATLAB报错输入参数太多
  • ¥15 python中合并修改日期相同的CSV文件并按照修改日期的名字命名文件
  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败