javascript - FabricJS:将带有 ClipPath 的 Freehand 添加到对象组

标签 javascript fabricjs

我正在使用 Fabricjs,我想在圆圈内绘制并将路径限制在圆圈内。这包括组的选择区域。

**更新: 好像解决了第一点 http://jsfiddle.net/42snph1d/14/

但是,选择范围太大了。无论如何要减少它所以它是圆的一侧而不是路径?**

是否可以 chop PATH 以仅包含圆内的点?

http://jsfiddle.net/42snph1d/12/

    canvas = window._canvas = new fabric.Canvas('canvas');
    canvas.backgroundColor = '#efefef';
    canvas.isDrawingMode= 1;
    canvas.freeDrawingBrush.color = "purple";
    canvas.freeDrawingBrush.width = 10;
    var circle = new fabric.Circle({ radius: 50, top: 50, left: 50, absolutePositioned:true })
    var group = new fabric.Group([circle]);
    canvas.add(group)
    canvas.renderAll();

    canvas.on("path:created", (e) => {
      var clipPath = new fabric.Circle({ radius: 50, top: 50, left: 50, absolutePositioned:true });
      var path = e.path;
      path.set({selectable:false})
      path.clipPath = clipPath;
      group.addWithUpdate(path)
    });

我在四处移动对象时看到奇怪的人工制品。

移动时可以在圆圈外的 Canvas 中看到徒手画

组选非常多,包括整个徒手画(甚至包括剪裁的部分)。我希望选择区域只包含圆圈。

这里有什么明显的修复吗?

JS Fiddle Demo

有什么建议吗?

最佳答案

您可以使用 globalCompositeOperation

在边界框之外创建边界框

在博客文章中的 Clip Canvas 中查看此内容 https://alimozdemir.com/posts/fabric-js-history-operations-undo-redo-and-useful-tips/

您可能需要复制路径并通过它剪切圆,然后通过原始路径再次剪切。

关于javascript - FabricJS:将带有 ClipPath 的 Freehand 添加到对象组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66793493/

相关文章:

javascript - Fabric Js - 是否可以将图像对象自动缩放到 Canvas ?

javascript - jQuery 中表达式 ${variable_name} 的含义是什么?

javascript - 遇到 if/else 语句的问题

javascript - 带有填充的 FabricJs Canvas 对象在调整大小时消失

javascript - 为什么图像在设置 preserveObjectStacking 后不能移动

javascript - 如何在 Canvas 中实现反向径向倾斜移位效果

javascript - 将 Fabric 项目从 1.6.3 升级到 3.6.x

javascript - 每个请求使用不同的 cookie 域进行快速 session ?

javascript - Vue.js - Bootstrap Vue Popover 解释 HTML

javascript - 具有另一个背景图像的图像链接不起作用