我更新了fabricjs以获得新的控制功能。
但是我的旧图像剪辑不再起作用,因为在新版本中删除了clipTo
中的fabric.Object
。
他们如何在不使用clipTo
的情况下裁剪图像,他们在更改日志中说我应该改用clipPath
。
img.set({
clipTo: function (ctx) {
ctx.moveTo(0, 0);
ctx.arc(0, 0,300, -Math.PI/6, -Math.PI+Math.PI/6 , true);
}
});
这是jsfiddle
此外,此官方演示将在版本4 beta中不起作用
http://fabricjs.com/clipping
最佳答案
因此,从版本2开始不推荐使用clipTo
,而在版本4中将其删除。正确的裁剪方法是使用clipPath
属性。这是一个简单的示例:
var radius = 150;
var clipPath = new fabric.Circle({
left: 0,
top: 0,
radius: radius,
startAngle: 0,
angle: Math.PI * 2,
originX: "top"
});
fabric.Image.fromURL("../public/pug_small.jpg", function(img) {
img.scale(0.5).set({
left: 100,
top: 100,
angle: -15,
clipPath: clipPath
});
canvas.add(img).setActiveObject(img);
});
这是clipPath http://fabricjs.com/clippath-part1的官方教程
Beta 4版本中有关
clipPath
的最新讨论:https://github.com/fabricjs/fabric.js/issues/6159还有一个示例沙盒演示:https://codesandbox.io/s/stackoverflow-60664120-fabric-js-400-beta8-mi0y7