2015-11-25 4 views
2

Привет Я работаю над библиотекой fabricjs и застревает с ошибкой.Невозможно поддерживать strokeWidth для элемента группы fabricjs

Я рисую группу Text и Rect, а затем повторно подбираю ее. Но я вижу, что размер группы @borders увеличивается с повторной калибровкой. Но я хочу, чтобы strokeWidth был таким же.

Вот Fiddle!.

Код: `

var gCanvas = new fabric.Canvas('canvDraw'); 
gCanvas.setWidth(500); 
gCanvas.setHeight(500); 

var myEllipse = new fabric.Ellipse({ 
top: 250, 
left: 100, 
rx: 75, 
ry: 50, 
fill: '#999999', 
stroke: '#000000', 
strokeWidth: 2 
}); 

var myText = new fabric.Text("Some text", { 
top: 250, 
left: 250, 
}); 


// set up a listener for the event where the object has been modified 
gCanvas.observe('object:modified', function (e) { 
var objects = gCanvas.getObjects(); 
for (i in objects) { 
    console.log(objects[i]); 
    objects[i].strokeWidth = 2; 
} 
}); 
var group = new fabric.Group([ myEllipse, myText ], {borderColor: 'black', cornerColor: 'green'}); 
gCanvas.add(group);` 

ответ

1

Se обновленный скрипку http://jsfiddle.net/6CDFr/264/ для динамического изменения strokewidth.

gCanvas.observe('object:modified', function (e) { 
var myObject = e.target; 

if (!myObject._objects) { 
    return; 
} 
for (i in myObject._objects) { 
    objects[i].strokeWidth = 2/Math.sqrt(myObject.scaleX * myObject.scaleY); 
} 
}); 

Будьте осторожны я удалил пару canvas.add(); Вы не должны добавлять объекты как на холсте и группе.

также размеры означают сохранение TEXT:

gCanvas.observe('object:added', function (e) { 
    if (e.target.type === 'text' || e.target.type === 'i-text') { 
     e.target.originalFontsize = e.target.fontSize; 
    } 
}); 
gCanvas.observe('object:modified', function (e) { 
var myObject = e.target; 

if (!myObject._objects) { 
    return; 
} 
for (i in myObject._objects) { 
    var obj = myObject._objects[i]; 
    var scaleFactor = Math.sqrt(myObject.scaleX * myObject.scaleY); 
    obj.strokeWidth = 2/scaleFactor; 
    if (obj.type === 'text' || obj.type === 'i-text') { 
     obj.fontSize = obj.originalFontsize/scaleFactor; 
    } 
} 
}); 

см обновляемые скрипку http://jsfiddle.net/6CDFr/269/

+0

Спасибо за ответ .Но один вопрос, мы не можем сохранить размер текста аналогично. Я не хочу, чтобы размер текста увеличивался/уменьшался при изменении размера. – subhfyu546754

+0

Я также добавляю это в ответ, но есть аналогичный вопрос, который я сделал неделю назад, пожалуйста, ищите лучше. – AndreaBogazzi

+0

, пожалуйста, примите ответ, если он решит, поэтому другие пользователи могут их найти. Измените te tile, чтобы отразить также сохранение шрифтов fontSize и границ группы при масштабировании. – AndreaBogazzi

Смежные вопросы