因此,将 SVG 添加到画布中,如下所示:
// load the svg
fabric.loadSVGFromURL(self.currentDraggedIcon, function(objects, d) {
var iconGroup = fabric.util.groupSVGElements(objects, d);
iconGroup.set({
left: e.layerX,
top: e.layerY,
width: d.width,
height: d.height,
lockUniScaling: true,
// scaleY:self.currentObjectDesigner.scaleFactor,
// scaleX:self.currentObjectDesigner.scaleFactor,
dtype: 'UserIcon'
});
self.currentObjectDesigner.fabric.add(iconGroup);
self.currentObjectDesigner.fabric.bringToFront(iconGroup);
self.currentObjectDesigner.fabric.renderAll();
});
稍后有一个按钮可以将组内的路径颜色更改为红色,执行此操作的代码是:
for (var i = 0; i < self.currentObjectDesigner.selectedObject._objects.length; i++) {
if (self.currentObjectDesigner.selectedObject.item(i).fill == findColor || self.currentObjectDesigner.selectedObject.item(i).fill == findColorAlt) {
self.currentObjectDesigner.selectedObject.item(i).fill = color;
}
}
self.currentObjectDesigner.selectedObject.addWithUpdate();
如果 SVG 有多个路径,这非常有效,但是当只存在一个路径时,_objects 属性不存在,因此我们无法执行循环和 item(i) 部分来设置路径上的填充。
问题是:当 _objects 不存在并且 item() 方法不存在因为它只是一个单一的路径时,我们现在如何设置填充?- 即它不是一个组。