【发布时间】:2018-07-20 02:46:27
【问题描述】:
我目前正在尝试使用fabric.js 库来为 PNG 或 SVG 填充图案。我试图从there 获得一些灵感,但无法按照说明进行操作。
这是我的模式:
这是我的 PNG 模板(无法上传 SVG,但它是 here。SVG 是白色的):
// GET AND INIT CANVAS (400x400)
canvas = new fabric.Canvas('canvas');
// MY PATHS
let patternURL = "../images/background1.jpg";
let SVGURL = "../svg/test.svg";
// CREATE MY SVG ELEMENT
fabric.loadSVGFromURL(SVGURL, function(objects, options) {
// CREATE MY PATTERN IMAGE
fabric.Image.fromURL(patternURL, function(patternImage) {
svg = fabric.util.groupSVGElements(objects, options);
svg = svg.set({"opacity": 1});
svg.getObjects().forEach(function(e) {
// IF I DON'T USE THIS LINE, THE SVG REMAIN WHITE
e.fill = patternImage
});
canvas.add(svg);
});
});
这是我的代码执行后的结果:
注意:我可以移动 PNG,如果我在添加 SVG 之前添加 canvas.add(patternImage);,我会得到以下结果:
(因此模式已按应有的方式加载)。
我想我已经很接近了,一定是缺少代码中的KEY 行。您有任何有用的信息或可以将我重定向到正确的位置吗?
编辑:这是我希望获得的(有点,我只是在油漆上做的)背景:
【问题讨论】:
-
你想要它作为背景还是覆盖?
-
我只是在最后的评论中添加了我希望获得的东西。
-
你有那两张图片吗?
-
我有很多图案,比如正方形的(第一张图片),还有很多模板(比如 SVG 或 PNG 中的第二张)。我需要一个接受这两个的函数,并动态创建第三个(如最后一个)
标签: javascript canvas design-patterns fabricjs