使用fabric.js从矩形区域获取对象并将其绘制到画布上

鬼奴

如何从特定的矩形区域(与选择框相同的行为,但手动)获取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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用fabric.js从矩形区域获取对象并将其绘制到画布上

来自分类Dev

使用fabric.js在画布上免费绘制

来自分类Dev

使用Fabric.js选择画布上的所有对象

来自分类Dev

在localhost上使用Fabric

来自分类Dev

如何使用 EaselJS 获取画布上绘制的所有点并将其存储在数据库中?

来自分类Dev

使用Fabric放大到画布中心

来自分类Dev

使用fabric.js的全屏画布模式

来自分类Dev

我如何使用 if isType() 为画布上的每个对象使用fabric js?

来自分类Dev

SVG无法使用Fabric.js在画布上正确渲染

来自分类Dev

使用fabric.js更改画布上的绘图光标

来自分类Dev

使用mouse:Fabric JS:覆盖动画对象

来自分类Dev

我使用Fabric在画布上绘制的所有内容都是偏移的

来自分类Dev

让用户使用Javascript在画布上用鼠标绘制矩形

来自分类Dev

使用Fabric在Twitter上撰写或共享图像

来自分类Dev

尝试在Prem上使用Service Fabric PublishProfiles

来自分类Dev

Python:如何使用动态键从字典中动态获取值并将其绘制到DataFrame?

来自分类Dev

使用 Javascript 对象在画布上绘制板

来自分类Dev

如何使用Fabric.js实现画布平移

来自分类Dev

如何使用按钮从Fabric.js画布中删除图像

来自分类Dev

使用Fabric.js启用和禁用画布的鼠标事件

来自分类Dev

如何使用按钮从Fabric.js画布中删除图像

来自分类Dev

如何在fabric.js中使用画布保存图像

来自分类Dev

Fabric.js-重建和商业使用

来自分类Dev

使用Fabric JS定义标记的行

来自分类Dev

如何使用fabric.js测量折线?

来自分类Dev

如何使用Fabric JS以编程方式自由绘制?

来自分类Dev

使用Fabric.js绘制贝塞尔曲线

来自分类Dev

无法在画布上添加新对象(fabric.js)

来自分类Dev

初始加载后使用Fabric.js修改fabric.Image.fromURL

Related 相关文章

  1. 1

    使用fabric.js从矩形区域获取对象并将其绘制到画布上

  2. 2

    使用fabric.js在画布上免费绘制

  3. 3

    使用Fabric.js选择画布上的所有对象

  4. 4

    在localhost上使用Fabric

  5. 5

    如何使用 EaselJS 获取画布上绘制的所有点并将其存储在数据库中?

  6. 6

    使用Fabric放大到画布中心

  7. 7

    使用fabric.js的全屏画布模式

  8. 8

    我如何使用 if isType() 为画布上的每个对象使用fabric js?

  9. 9

    SVG无法使用Fabric.js在画布上正确渲染

  10. 10

    使用fabric.js更改画布上的绘图光标

  11. 11

    使用mouse:Fabric JS:覆盖动画对象

  12. 12

    我使用Fabric在画布上绘制的所有内容都是偏移的

  13. 13

    让用户使用Javascript在画布上用鼠标绘制矩形

  14. 14

    使用Fabric在Twitter上撰写或共享图像

  15. 15

    尝试在Prem上使用Service Fabric PublishProfiles

  16. 16

    Python:如何使用动态键从字典中动态获取值并将其绘制到DataFrame?

  17. 17

    使用 Javascript 对象在画布上绘制板

  18. 18

    如何使用Fabric.js实现画布平移

  19. 19

    如何使用按钮从Fabric.js画布中删除图像

  20. 20

    使用Fabric.js启用和禁用画布的鼠标事件

  21. 21

    如何使用按钮从Fabric.js画布中删除图像

  22. 22

    如何在fabric.js中使用画布保存图像

  23. 23

    Fabric.js-重建和商业使用

  24. 24

    使用Fabric JS定义标记的行

  25. 25

    如何使用fabric.js测量折线?

  26. 26

    如何使用Fabric JS以编程方式自由绘制?

  27. 27

    使用Fabric.js绘制贝塞尔曲线

  28. 28

    无法在画布上添加新对象(fabric.js)

  29. 29

    初始加载后使用Fabric.js修改fabric.Image.fromURL

热门标签

归档