前端 canvas 使用 fabric.js 如何做出限制显示的效果?
举个例子,有一个画布,上面设定一个区域,图片在区域里面都可以显示,但移动图片到这个区域之外,就会隐藏看不到,这样的需求应该怎么做呢?
如果能给一个思路也是可以的,感谢各位大神的回答
个人的思路,给每个添加到 canvas 的图片加一个相同的裁剪
var logoImg = new Image();
logoImg.onload = function (img) {
var logo = new fabric.Image(logoImg, {
angle: 10,
width: 550,
height: 190,
left: 150,
top: 50,
scaleX: 0.25,
scaleY: 0.25,
clipName: 'logo',
clipTo: function(ctx) {
return _.bind(clipByName, logo)(ctx)
}
});
canvas.add(logo);
};
logoImg.src = img01URL;
回复
1个回答
test
2024-07-07
其实方法很简单,重点其实就是注意一个参数 absolutePositioned 设定为 true 时就会相对于父容器,对父容器进行裁剪,否则就是裁剪图片本身。
const clipPath = new fabric.Rect({
width: 300,
height: 200,
top: 200,
left: 20,
absolutePositioned: true
});
fabric.Image.fromURL('src.png', (img) => {
img.clipPath = clipPath;
img.set({
top: 250,
scaleX: 0.2,
scaleY: 0.2
})
this.canvas.add(img);
}, { crossOrigin: 'anonymous' })
回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容