无法维护 fabricjs 组元素的 strokeWidth
Unable to maintain strokeWidth for fabricjs group element
嗨,我正在研究 fabricjs 库,但遇到了一个错误。
我正在绘制一组 Text 和 Rect,然后重新调整其大小。
但我看到 @borders 组的大小随着 re-sizing 的增加而增加。
但我希望 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);`
已更新 fiddle
http://jsfiddle.net/6CDFr/264/
用于动态笔划宽度变化。
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();
你不应该同时添加对象到 canvas 和组。
同时维护 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;
}
}
});
查看更新 fiddle http://jsfiddle.net/6CDFr/269/
嗨,我正在研究 fabricjs 库,但遇到了一个错误。
我正在绘制一组 Text 和 Rect,然后重新调整其大小。 但我看到 @borders 组的大小随着 re-sizing 的增加而增加。 但我希望 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);`
已更新 fiddle http://jsfiddle.net/6CDFr/264/ 用于动态笔划宽度变化。
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();
你不应该同时添加对象到 canvas 和组。
同时维护 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;
}
}
});
查看更新 fiddle http://jsfiddle.net/6CDFr/269/