FabricJS - Clip object to bounding box
How to use a rect as a bounding box for an image or text to allow for a clipping region or bounding box.
by boulabiar
HTML
<canvas id="c" width="400" height="400"></canvas>
CSS
#c {
border:0px solid #ccc;
}
JavaScript
var img01URL = 'https://www.google.com/images/srpr/logo4w.png';
var img02URL = 'http://fabricjs.com/lib/pug.jpg';
var canvas = new fabric.Canvas('c');
function downloadURI(uri, name) {
var link = document.createElement('a');
link.download = name;
link.href = uri;
console.log(link);
document.body.appendChild(link);
link.click();
//document.body.removeChild(link);
//delete link;
}
// Note the use of the `originX` and `originY` properties, which we set
// to 'left' and 'top', respectively. This makes the math in the `clipTo`
// functions a little bit more straight-forward.
var clipRect1 = new fabric.Rect({
originX: 'left',
originY: 'top',
left: 180,
top: 10,
width: 200,
height: 200,
fill: '#DDD', /* use transparent for no fill */
strokeWidth: 0,
selectable: false
});
// We give these `Rect` objects a name property so the `clipTo` functions can
// find the one by which they want to be clipped.
clipRect1.set({
clipFor: 'pug'
});
canvas.add(clipRect1);
// Since the `angle` property of the Image object is stored
// in degrees, we'll use this to convert it to radians.
function degToRad(degrees) {
return degrees * (Math.PI / 180);
}
var clipByName = function (ctx) {
ctx.save();
ctx.beginPath();
var pathCode =...