html5-canvas - Fabricjs - 如何仅剪辑选定的对象?

标签 html5-canvas clipping fabricjs

我已经尝试过旧版和最新版的fabricjs 1.1.13,但它们都不能仅在选定的对象上应用clipTo 函数。如果只有一个对象并且需要剪切它,那是可以的,但是当有更多对象并且尝试仅剪切选定的对象时,所有其他对象也会被剪切。最奇怪的行为是,在选择其他对象之前,剪辑会应用于所选对象,但在选择其他对象并尝试剪辑它之后,所有已剪辑的对象也会受到影响。 我想使用以下步骤解决该问题。

  1. 有两个对象:object1 和 object2。
  2. 我选择了 object1 并对其应用了 ClipTo 函数。
  3. 对象 1 会被相应剪切,其他未选择的对象 2 不受影响。到这里就OK了。
  4. 现在我选择object2并对其应用clipTo函数。但此时clipTo函数也会影响未被选中的object1。

请记住,我动态使用clipTo函数,而不是在对象初始化期间使用以下函数。

var obj = canvas.getActiveObject();
var roundness = dynamicValue; // get using jquery sliders
if(obj)
   obj.clipTo = function(ctx) {
             ctx.arc(0, 0, roundness, 0, Math.PI * 2, true);
   }
canvas.renderAll();

如何解决这个问题,请帮忙。

最佳答案

如果 activeObject !== lastActive,则保存最后一个 activeObject 并删除 ClipTo。

    var obj = canvas.getActiveObject();

    if (!obj) return;

    if (lastActive && lastActive !== obj) {
        lastActive.clipTo = null;
    }

    var roundness = Math.round(Math.random() * 60, 2)
    obj.clipTo = function (ctx) {
        ctx.arc(0, 0, roundness, 0, Math.PI * 2, true);
    }
    lastActive = obj;
    canvas.renderAll();

看这里: http://jsfiddle.net/Kienz/qfgfj/

关于html5-canvas - Fabricjs - 如何仅剪辑选定的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16623121/

相关文章:

javascript - 使用 Fabric JS 设置线条对象的渐变

javascript - fabricJS 中 Text 和 IText 的区别

jquery - 为什么这个 Canvas 动画运行时断断续续?

javascript - Ionic 3 - 根据鼠标/触摸位置, Canvas 绘制并不完美

html - CreateJS 带矩阵的径向渐变

python - 如何在 Keras 中裁剪张量,并为每个子张量使用不同的裁剪值?

javascript - 如何在fabric.js中选择和拖动对象

windows - Html5 Canvas : Rotated text looks distorted on Google Chrome

python - 带补丁的剪切轴

silverlight - 如何在 Silverlight 中创建拉伸(stretch)裁剪矩形