fabricjs画布内的svg颜色没有改变

Posted

技术标签:

【中文标题】fabricjs画布内的svg颜色没有改变【英文标题】:svg color inside fabricjs canvas not changing 【发布时间】:2021-11-14 23:20:49 【问题描述】:

我正在尝试更改 fabricjs 画布内的 svg 路径填充。

使用此功能

function changeColor(material) 

    console.log(svgGroup[0].fill)
    console.log(material);
    if (material == 'base') 
        svgGroup[0].fill = '#000000';
        console.log(svgGroup[0].fill)
    
    texture.needsUpdate = true;
    object.children[0].material = textureMaterial;
    canvas.renderAll();

但它不会自动更新

有人知道为什么吗?任何想法都会有所帮助

【问题讨论】:

svgGroup[0] 包含什么?你介意分享 svg 吗? 其实我只是发现了问题,问题是我没有正确设置颜色。我应该使用.set('fill', color) 这样在调用renderAll() 时呈现它 【参考方案1】:

我找到了解决方案,问题是我没有正确设置颜色。而不是这样做

svgGroup[0].fill = '#000000';

应该用这个

svgGroup._objects.forEach(obj => 
    if (obj.id == material) 
        obj.set('fill', color);
    
);

调用 renderAll() 时的渲染方式

【讨论】:

以上是关于fabricjs画布内的svg颜色没有改变的主要内容,如果未能解决你的问题,请参考以下文章

Fabricjs:在画布上更新 SVG

如何清除画布属性和事件并将其添加回fabricjs?

无法将 FabricJS svg 或组对象移动到画布左上角

FabricJS - Javascript - PHP:导出 SVG 保存在服务器上

如何使用threejs将fabricjs加载为obj的纹理

如何使fabricJS画布在移动设备上可水平拖动?