2017-06-13 73 views
0

我使用「fabricjs」,並且我很難理解clipTo的用法。 確實,我想在我的所有畫布上製作一個蒙版,但不是在對象/背景上。面具有SVG形狀。 我在1.7.3版本。FabricJS clipTo,除了對象上的掩碼

感謝

+1

請添加您的代碼。你到目前爲止做了什麼? – Observer

+0

它在這裏:https://jsfiddle.net/6w7jo33v/22/ – CeeJ

+0

你的例子正在做你所需要的。你能提供更多細節你不明白的東西嗎? – Observer

回答

0

恐怕你不能輕易使用clipTo與SVG。您必須修改SVG的路徑並將該路徑的座標更改爲裁剪框。 在我的回覆Creating complex clipping path for image?進行剪輯,你必須修改剪輯形狀的座標。

var scaleXTo1 = (1/pug.scaleX); 
     var scaleYTo1 = (1/pug.scaleY); 
     ctx.save(); 

     var ctxLeft = -(pug.width/2); 
     var ctxTop = -(pug.height/2); 

     ctx.translate(ctxLeft, ctxTop); 
     ctx.scale(scaleXTo1, scaleYTo1); 
     ctx.beginPath(); 
     console.log(points) 
     ctx.moveTo(points[0][0] - pug.oCoords.tl.x, points[0][1] - pug.oCoords.tl.y); 
     for (var i=1; i < points.length; i++){ 
     ctx.lineTo(points[i][0] - pug.oCoords.tl.x, points[i][1] - pug.oCoords.tl.y); 
     } 
     ctx.closePath(); 
     ctx.restore(); 
     }; 

例如,您想從100,100位剪切到200,200位。那個盒子將成爲你剪裁的邊界。您必須使用從100,100開始的新座標系更新SVG路徑並縮放座標。

我會推薦覆蓋兩個畫布一個如果爲背景,另一個爲您的操作。示例可以在這裏找到:https://stackoverflow.com/a/44494261/7132835

+0

非常感謝您的幫助。 最後一個問題,當我選擇幾個對象時,它們消失。 如何將剪輯應用到所選組? https://jsfiddle.net/CeeeJ/6w7jo33v/23/ – CeeJ