2013-11-29 1 views
2

Я пытаюсь создать текстовое поле на холсте с помощью fabricJS. Я нашел демо на Fabric official website.Fabric.js: Как сделать текст в форме для рендеринга новой строки?

Я создал новый класс для этого, и это мой код:

fabric.Writebox = fabric.util.createClass(fabric.Rect, { 
     type: 'writebox', 
     initialize: function(element, options) { 
      this.callSuper('initialize', element, options); 
      options && this.set('lockUniScaling', options.lockUniScaling); 
      options && this.set('label', options.label || ''); 
     }, 
     toObject: function() { 
      return fabric.util.object.extend(this.callSuper('toObject'), { 
       label: this.label, 
       lockUniScaling: this.lockUniScaling 
      }); 
     }, 
     _render: function(ctx) { 
      this.callSuper('_render', ctx); 
      ctx.font = '20px Times'; 
      ctx.fillStyle = '#333'; 
      ctx.fillText(this.label, -this.width/2 + 4, -this.height/2 + 20); 
     } 
    }); 

и это, как я сделать/добавить на холсте:

var theString="Testing the text \n And This is a new line"; 
$("#textlen").html(theString); 
var theWidth = $("#textlen").width(); 
alert(theWidth); 
    var labeledRect = new fabric.Writebox({ 
     width: 300, 
     height: 50, 
     left: 300, 
     top: 100, 
     label: theString, 
     fill: '#faa', 
     stroke: 1 
    }); 

Но когда labeledRect оказывается на холсте текст внутри прямоугольника не будет отображаться в двух строках. У кого-нибудь есть решение? Благодаря!

+0

вы можете сделать jsfiddle вашего примера? будет легче просмотреть это – Rash

ответ

0

Я видел некоторый код, где текст вмененный с «\ п» Вы можете попробовать это