• 在webgl2上使用fabric做标记


    摸着石头过河, 想使用fabric 内的画图功能, 在xbim 展示页面图上做标注.

    发现const canv= viewer.canvas.getContext("2d"); 获取不到 对象,因为图是webgl2

    发现const canvas = document.getElementById('viewer'); 和fabric 共享一个canvas ,根本就是无法使用,重画渲染等根本就没法公用.
    fabric是自己画画布的.与3d 那个canvas共享一个是行不通的.

    Fabric.js有什么功能?

    使用Fabric.js,你可以在画布上创建和填充对象; 比如简单的几何形状 - 矩形,圆形,椭圆形,多边形,自定义图片或由数百或数千个简单路径组成的更复杂的形状。

    另外,还可以使用鼠标缩放,移动和旋转这些对象; 修改它们的属性 - 颜色,透明度,z-index等。也可以将画布上的对象进行组合。下面我将会介绍我常用的功能以及场景,更多功能可以参考 官方文档

    https://segmentfault.com/a/1190000018096233

    解决办法,就是定义两个canvas,默认是3d那个,使用标记的时候,通过把另一个canvas 置顶.就可以尽情fabric功能实现各种需求了.

       var viewerid=  document.getElementById("viewer")
        viewerid.style.position="absolute";
        viewerid.style.left="0";
        viewerid.style.top="0";
        viewerid.style.zIndex="2";
    
        document.getElementById("markviewer").style.position="absolute";
        document.getElementById("markviewer").style.left="0";
        document.getElementById("markviewer").style.top="0";
        document.getElementById("markviewer").style.zIndex="300";
        const canvas = new fabric.Canvas('markviewer', {
            isDrawingMode: true
        });
       // const ctx = canvas.getContext();
    // 如果<canvas>标签没设置宽高,可以通过js动态设置
     canvas.setWidth(3500);
        canvas.setHeight(2000);

     

    技术交流qq群:143280841
  • 相关阅读:
    Java Varargs 可变参数使用
    GitLab 如何删除 Forked from
    Git Clone 的时候遇到 Filename too long 错误
    Spring Boot 如何部署到 Linux 中的服务
    Gradle 如何打包 Spring Boot 如何不添加版本代码
    HDU 5878---预处理+二分查找
    HDU 5881--Tea 思维规律
    HDU 5879---cure
    (转)C/S 与 B/S 区别
    卡特兰数
  • 原文地址:https://www.cnblogs.com/zuochanzi/p/15433277.html
Copyright © 2020-2023  润新知