【发布时间】:2018-05-17 13:26:06
【问题描述】:
我将模式应用于 SVG,并使用 toJSON 将数据保存在数据库中。当我尝试使用 loadFromJSON 在画布上加载它时,它的抛出错误模式源是未定义的。
这是我用来设置模式的代码。
fabric.Image.fromURL(url,function(img){
img.scaleToWidth(width);
if (angle > 0) img.set('angle', angle);
var patternSourceCanvas = new fabric.StaticCanvas();
patternSourceCanvas.add(img);
patternSourceCanvas.renderAll();
var pattern = new fabric.Pattern({
source: function() {
patternSourceCanvas.setDimensions({
width:img.getWidth() + padding,
height:img.getHeight() + padding
});
patternSourceCanvas.renderAll();
return patternSourceCanvas.getElement();
},
repeat: isrepeat,
src: url,
});
if(left_offset > 0) { pattern.offsetX = (left_offset); } else{ pattern.offsetX = 0;}
if(top_offset > 0) { pattern.offsetY = (top_offset); } else { pattern.offsetY = 0;}
var applyPatternto = 0;
if(activeView != 1){ applyPatternto = $("#sel_applyPatternto").val(); }
currentElement.paths[applyPatternto].setFill(pattern);
canvas.renderAll();
});
要加载保存 JSON 并从我使用的 JSON 加载,
var frontJson = JSON.stringify(canvas.toJSON());
在从 JSON 加载时,我还添加了延迟以检查相同的问题,
canvas.loadFromJSON(frontJson);
setTimeout(function(){
canvas.renderAll.bind(canvas);
},3000);
【问题讨论】:
-
上述问题你得到答案了吗?