Fabric.js: Как да направя текста във форма за изобразяване на нов ред?

Опитвам се да създам текстово поле върху платно, като използвам fabricJS. Намерих демонстрация на официалния уебсайт на Fabric.

Създадох нов клас за него и това е моят код:

 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 се визуализира върху платно, текстът вътре в правоъгълника няма да се покаже в два реда. Някой има ли решение по въпроса? Благодаря!


person PaulLing    schedule 29.11.2013    source източник
comment
можете ли да направите jsfiddle от вашия пример? ще бъде по-лесно да прегледате това   -  person Rash    schedule 25.12.2013


Отговори (1)


Виждал съм някакъв код, където текстът е приписан с '\n' Можете да опитате

person Oleksiy    schedule 28.07.2016