zoukankan      html  css  js  c++  java
  • 在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
  • 相关阅读:
    C# 消息队列 RabbitMQ
    C# webapi简单学习
    Navicat Premium 12注册机使用教程
    .net WCF简单练习
    MSDN 我告诉你(资源库)
    Dapper查询返回Datatable
    day55 无连接,无状态,会话跟踪、cookie、django中操作cookie、session、django中操作session
    day54 锁和事务、ajax、中间件
    day53 url别名反向解析、ORM多表操作、聚合查询、分组查询、F查询、Q查询
    day52
  • 原文地址:https://www.cnblogs.com/zuochanzi/p/15433277.html
Copyright © 2011-2022 走看看