使用 Fabric.js 中的对象创建剪贴蒙版
Create a clipping mask using an object in Fabric.js
我正在尝试使用 Fabric 创建 T 恤编辑器。我在 canvas 上设置了一件衬衫作为背景图片。现在,我试图在 T 恤的中间设置一个区域作为剪贴蒙版。我只希望该区域内的对象可见。
这是我的代码:http://jsfiddle.net/mtb2p3Lx/4/
var canvas = new fabric.Canvas('c');
// set background
fabric.Image.fromURL('https://qstomizr.s3.amazonaws.com/11102-9LDAQLKA1585254870.5083.jpg', (img) => {
canvas.setBackgroundImage(img, null, {
originX: 'center',
originY: 'center',
top: canvas.getCenter().top,
left: canvas.getCenter().left,
stroke: 'black',
strokeWidth: 1,
});
canvas.renderAll();
});
// set masking area
var area = new fabric.Rect({
originX: 'center',
originY: 'center',
top: this.canvas.getCenter().top,
left: this.canvas.getCenter().left + 10,
width: 250,
height: 300,
selectable: false,
fill: 'transparent',
stroke: 'black',
strokeWidth: 2,
});
canvas.add(area)
// set example rect
var rect = new fabric.Rect({
originX: 'center',
originY: 'center',
top: this.canvas.getCenter().top + 50,
left: this.canvas.getCenter().left + 150,
height: 100,
width: 100,
fill: 'pink',
});
canvas.add(rect)
我尝试向 area
矩形添加剪辑路径,也尝试使用 globalCompositeOperation
,但如果不牺牲背景图像,我将无法正常工作。
有没有办法让透明区域 rect 充当 canvas 中其他对象的剪切蒙版?
如您在此站点上所见https://printio.ru/tees/new_v2。为了实现背景图像,使用了 img
标签而不是 setBackgroundImage
。我在这里给你举个例子
我正在尝试使用 Fabric 创建 T 恤编辑器。我在 canvas 上设置了一件衬衫作为背景图片。现在,我试图在 T 恤的中间设置一个区域作为剪贴蒙版。我只希望该区域内的对象可见。
这是我的代码:http://jsfiddle.net/mtb2p3Lx/4/
var canvas = new fabric.Canvas('c');
// set background
fabric.Image.fromURL('https://qstomizr.s3.amazonaws.com/11102-9LDAQLKA1585254870.5083.jpg', (img) => {
canvas.setBackgroundImage(img, null, {
originX: 'center',
originY: 'center',
top: canvas.getCenter().top,
left: canvas.getCenter().left,
stroke: 'black',
strokeWidth: 1,
});
canvas.renderAll();
});
// set masking area
var area = new fabric.Rect({
originX: 'center',
originY: 'center',
top: this.canvas.getCenter().top,
left: this.canvas.getCenter().left + 10,
width: 250,
height: 300,
selectable: false,
fill: 'transparent',
stroke: 'black',
strokeWidth: 2,
});
canvas.add(area)
// set example rect
var rect = new fabric.Rect({
originX: 'center',
originY: 'center',
top: this.canvas.getCenter().top + 50,
left: this.canvas.getCenter().left + 150,
height: 100,
width: 100,
fill: 'pink',
});
canvas.add(rect)
我尝试向 area
矩形添加剪辑路径,也尝试使用 globalCompositeOperation
,但如果不牺牲背景图像,我将无法正常工作。
有没有办法让透明区域 rect 充当 canvas 中其他对象的剪切蒙版?
如您在此站点上所见https://printio.ru/tees/new_v2。为了实现背景图像,使用了 img
标签而不是 setBackgroundImage
。我在这里给你举个例子