如何从特定的矩形区域(与选择框相同的行为,但手动)获取fabric.js对象,然后将对象的“选定”像素区域绘制到标准画布上?
注意:在我的情况下,直接获取像素数据是不可能的,因为画布用作视口,而对象可能不在视口内(即平移)。
通过查看功能,解决了它_collectObjects并扩展了功能fabric.js drawObjsTo从矩形收集的对象,并使其作为参数传递的画布背景下,解决方案是一个有点脏,但它可以解决另外一个问题,我与在fabric.js画布上的一个简单的getImageData,结果数据包括选择框,因此该函数也可以仅用于获取对象的像素数据。
fabric.Canvas.prototype.drawObjsTo = function (ctx, x1, y1, x2, y2) {
var currentObject,
selectionX1Y1 = new fabric.Point(Math.min(x1, x2), Math.min(y1, y2)),
selectionX2Y2 = new fabric.Point(Math.max(x1, x2), Math.max(y1, y2));
for (var i = this._objects.length; i--; ) {
currentObject = this._objects[i];
if (!currentObject || !currentObject.visible) {
continue;
}
if (currentObject.intersectsWithRect(selectionX1Y1, selectionX2Y2) ||
currentObject.isContainedWithinRect(selectionX1Y1, selectionX2Y2) ||
currentObject.containsPoint(selectionX1Y1) ||
currentObject.containsPoint(selectionX2Y2)
) {
currentObject.render(ctx);
}
}
};
也许应该在fabric.js中本来可以做到这一点。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句