使用fabric.js从矩形区域获取对象,并将该区域绘制到画布上
Getting objects from a rectangular area with fabric.js and draw the area to a canvas
如何从特定的矩形区域获取fabric.js对象(与选择框的行为相同,但手动),然后将对象的"选定"像素区域绘制到标准画布上?
注意:在我的情况下,直接获取像素数据是不可能的,因为画布被用作视口,对象可能在视口之外(即:平移)。
通过查看函数_collectObjects并使用函数drawObjsTo扩展fabric.js来解决这个问题,该函数从矩形中收集对象并在作为参数传递的画布上下文中渲染它们,这个解决方案有点脏,但它可以解决我在fabric.jss画布上使用简单的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中实现这一点。
相关文章:
- onkeyup无法动态创建多个文本区域
- D3在一个调用中绘制不同的SVG形状,没有可见性
- FabricJs-限制主对象内添加对象的移动区域
- 有没有一个javascript图形绘制库可以进行气球树布局
- 使用fabric.js从矩形区域获取对象,并将该区域绘制到画布上
- 画布中绘制的矩形区域的弹出工具提示
- 如何使用Three.JS绘制n边区域
- 如何仅在特定区域内绘制圆
- 绘制正态分布曲线,左下角区域在 javascript 中带有阴影
- 传单.js绘制控件不能在整个地图窗口区域上移动
- imagemapster用不同的颜色绘制不同的区域
- 如何计算绘制区域的面积
- Css块绘制区域
- 在谷歌地图v3 API上绘制区域多边形
- 输入纬度和经度以从文本区域绘制多边形
- 选择语言绘制地图& &;用图标显示几个区域
- 如何在地图上用渐变绘制一个区域
- 使用JavaScript或Coldfusion绘制和填充基于4或5个坐标点的区域
- 绘制HTML5画布的特定区域
- D3.js图表调用并在缩放后重新绘制区域