【国产开源可视化引擎Meta2d.js】图层

独立图层

每个图元都有先后绘画顺序,即每个图元拥有一个独立图层,即meta2d.data().pens的数组索引。

可以通过meta2d.top/bottom/up/down等函数改变独立图层顺序。

分组图层

通过标签可以标识一个分组图层,通过meta2d.find('图层标签')获取该图层所有图元。可以控制同一个分组图层的图元的显示/隐藏。(逻辑上的图层)

物理图层

即实际图元绘制的图层。

如图所示,meta2d的绘制图层从上到下有:

  1. 模板层 绘制模板图元。绘制背景颜色、背景图片和背景网格,对应z-index属性为1。
  2. 下层图片绘制层,z-index为2。
  3. 中层 主画布层,z-index为3。
  4. 上层图片绘制层,z-index为4。绘制标尺。
  5. dom图元,可以通过设置zIndex属性去改变他的显示层级。

问题: 哪些是dom图元?

目前官方推出的图形库中echarts图表、highCharts图表、LightningCharts图表、音视频、iframe(网页)、摄像头、gif动图、轮播图、轮播页面等都是dom图元。(开发者可以通过控制台-元素拾取判断)

版本迭代

  1. @meta2d/core version<1.0.28

包括上下两个图片绘制层和中间主画布层。

image图元(非动态的图片)一般绘制在上/下层图片绘制层,可以通过isBottom属性控制上/下。pen.isBottom===ture时,绘制在下层,否则绘制在上层。

问题:为什么要添加两个图片层?

因为canvas绘制图片比较占用性能,我们通过上下两个独立的图片绘制层,去减少图片图元的绘制次数,从而减少性能消耗。而设置两层是为了控制图片可以绘制在其他图元的上方/下方。

  1. 1.0.28≤version≤1.0.35

引入了模版层,对应template属性。pen.template===true时,图元绘制在模版层上。

模版层上的图元可以是除dom图元外的任意图元,甚至是图片。模版层图元应尽可能少的修改,模版层上的图元不支持设置动画。

这个版本可以参考视频:乐吾乐meta2d图元层级问题讲解

问题:为什么要添加模版层?

这是为了处理在低性能设备上,切换的时候会有闪屏/白屏的问题,添加模版层,相同模版的图纸相互切换模版层不会重绘,也就是最底层的画布不会变化,就没有上述的问题了。这刚好和我们大屏的模版也是对应上的,尽可能少的修改、尽可能少的重绘。

  1. version≥1.0.36

该版本以后,图片节点可以绘制在主画布上了。同时,为了简化属性标志,我们弃用了isBottom和template属性,新增了canvasLayer属性。老数据格式在新版本核心库会做相应的转化。

enum CanvasLayer{
  CanvasTemplate = 1, //模版层   
  CanvasImageBottom, //下层图片层
  CanvasMain, //主画布层
  CanvasImage //上层图片层
}

Copy

在官方编辑器中,选中图片图元后右键:

1. 选择置顶,图片节点会移动到上层图片层绘制(pen.canvasLayer===CanvasLayer.CanvasImage)同时在meta2d.store.data.pens的顺序的最后;

2. 置底会移动到下层图片层绘制(pen.canvasLayer===CanvasLayer.CanvasImageBottom)同时在meta2d.store.data.pens的顺序的最前;

3. 选择上一层/下一层 后,图片节点会移动到主画布层绘制(pen.canvasLayer===CanvasLayer.CanvasMain),此时,更易操作和其他非图片图元层级关系。

需要注意的是:我们上面提过,上层/下层图片层绘制次数更少,性能消耗更小,所以如果没有强制需求,尽量不要操作上一层/下一层,导致将图片节点移动到主画布层。

国产开源

乐吾乐潜心研发,自主可控,持续迭代优化

Github:GitHub - le5le-com/meta2d.js: The meta2d.js is real-time data exchange and interactive web 2D engine. Developers are able to build Web SCADA, IoT, Digital twins and so on. Meta2d.js是一个实时数据响应和交互的2d引擎,可用于Web组态,物联网,数字孪生等场景。

Gitee: meta2d.js: The meta2d.js is real-time data exchange and interactive web 2D engine. Developers are able to build Web SCADA, IoT, Digital twins and so on. Meta2d.js是一个实时数据响应和交互的2d引擎,可用于Web组态,物联网,数字孪生等场景。

欢迎Star、Fork、博文支持

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/774078.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

己内酰胺纯化除杂的最佳工艺

己内酰胺纯化除杂的最佳工艺包括结晶法、离子交换树脂法、精馏法和萃取法等&#xff0c;每种方法都有其特定的应用场景和优缺点。以下是对这些方法的详细介绍&#xff1a; 最佳工艺介绍 ● 结晶法&#xff1a;通过调节pH值&#xff0c;使己内酰胺在特定条件下结晶&#xff0…

yolov8环境安装(可修改代码版本,源代码安装)

下载下来源文件以后&#xff0c;进去文件目录&#xff0c;然后输入pip指令&#xff0c;即可安装yolov8 cd ultralytics-main pip install -e . 直接使用pip安装的情况 当你使用pip install ultralytics这样的命令安装YOLOv8时&#xff0c;你实际上是在从Python包索引&#x…

C#实战|账号管理系统:通用登录窗体的实现。

哈喽,你好啊,我是雷工! 本节记录登录窗体的实现方法,比较有通用性,所有的项目登录窗体实现基本都是这个实现思路。 一通百通,以下为学习笔记。 01 登录窗体的逻辑 用户在登录窗输入账号和密码,如果输入账号和密码信息正确,点击【登录】按钮,则跳转显示主窗体,同时在固…

AI提示词:一个能让你的AI提升10倍逻辑能力的提示词,只有这几个字,Kimi和GPT都适用!

昨天晚上和朋友聊天&#xff0c;聊到AI提示词在实际使用过程中的逻辑能力问题。 他也是一个AI提示词的重度使用者&#xff0c;但是会经常遇到一个问题&#xff1a;明明觉得自己的提示词描述的很清楚了&#xff0c;可是AI输出的内容还是达不到自己想要的效果。 今天给大家分享…

认识不-物联网“六域模型”有哪些有什么作用

如下参考源于苏州稳联授权可见认知域-感知域-网络域-应用域-管理域-安全域-物联网六域模型 苏州稳联 (iotrouter.cn) 认识物联网“六域模型”&#xff1a;构成与作用 “六域模型”是一个有效的框架。这个模型通过将物联网划分为六个相互关联的域&#xff0c;帮助我们更好地理…

【网络安全】漏洞挖掘之Spring Cloud注入漏洞

漏洞描述 Spring框架为现代基于java的企业应用程序(在任何类型的部署平台上)提供了一个全面的编程和配置模型。 Spring Cloud 中的 serveless框架 Spring Cloud Function 中的 RoutingFunction 类的 apply 方法将请求头中的“spring.cloud.function.routing-expression”参数…

免费的二级域名分发,您确定不要试试吗?

这是可爱的小盆友做的一个免费的二级域名&#xff0c;目前上线就送114514个积分&#xff0c;名额有限~ 首先进入>路明二级域名分发 - 免费稳定的二级域名分发服务 (kmyl.top)< 进来是这个样子&#xff08;如下图所示&#xff09; 话不多说&#xff0c;进入教程~ 第一章…

创建react的脚手架

Create React App 中文文档 (bootcss.com) 网址&#xff1a;creat-react-app.bootcss.com 主流的脚手架&#xff1a;creat-react-app 创建脚手架的方法&#xff1a; 方法一&#xff08;JS默认&#xff09;&#xff1a; 1. npx create-react-app my-app 2. cd my-app 3. …

Redis 7.x 系列【19】管道

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Redis 版本 7.2.5 源码地址&#xff1a;https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 往返时间2. 管道技术3. 代码演示4. 其他批处理4.1 原生批处理命令4.2 事务4.3 脚本…

短链接学习day2

用户敏感信息脱敏展示&#xff1a; RequestParam 和 PathVariable的区别 注解是用于从request中接收请求的&#xff0c;两个都可以接收参数&#xff0c;关键点不同的是RequestParam 是从request里面拿取值&#xff0c;而 PathVariable 是从一个URI模板里面来填充。 PathVari…

CSDN导入本地md文件图片不能正常回显问题

标题 搭建图像仓库获取图片URL 路径替换 因为服务器读取不到本地图片&#xff0c;故不能正常回显&#xff0c;因此想要正常回显图片&#xff0c;我们首先要做的就是搭建一个可以存放图片的服务器&#xff0c;像你可以选择购买一个云服务器、FastDFS图片服务器、Minio多云对象存…

初阶数据结构二叉树练习系列(1)

这个系列的文章将带大家一起刷题&#xff0c;并且总结思路 温馨提示&#xff1a;本篇文章里的练习题仅适合刚学完二叉树的小白使用 相同的树 思路 情况分析&#xff1a;第一种情况&#xff1a;两棵树都为空 → 返回true 第二种情况&am…

【linux进程】进程地址空间(什么是进程地址空间?为什么要有进程地址空间?)

目录 一、前言 二、 程序的地址空间是真实的 --- 物理空间吗&#xff1f; 三、进程地址空间 &#x1f525; 操作系统是如何建立起进程与物理内存之间的联系的呢&#xff1f; &#x1f525;什么是进程地址空间&#xff1f; &#x1f525;为什么不能直接去访问物理内存&a…

LeetCode刷题之搜索二维矩阵

2024 7/5 一如既往的晴天&#xff0c;分享几张拍的照片嘿嘿&#xff0c;好几天没做题了&#xff0c;在徘徊、踌躇、踱步。蝉鸣的有些聒噪了&#xff0c;栀子花花苞也都掉落啦&#xff0c;今天给他剪了枝&#xff0c;接回一楼来了。ok&#xff0c;做题啦&#xff01; 图1、宿舍…

数据结构 —— 最小生成树

数据结构 —— 最小生成树 什么是最小生成树Kruskal算法Prim算法 今天我们来看一下最小生成树&#xff1a; 我们之前学习的遍历算法并没有考虑权值&#xff0c;仅仅就是遍历结点&#xff1a; 今天的最小生成树要满足几个条件&#xff1a; 考虑权值所有结点联通权值之和最小无环…

JavaWeb开发之环境准备-大合集

本文博客地址 JavaWeb开发 || 环境准备 1. 前言2. JDK8安装2.1 下载地址2.2 安装配置图示2.2.1 JDK安装2.2.2 配置系统环境变量 3. Maven安装3.1 Maven下载3.2 Maven解压及系统变量配置 4. Tomcat安装4.1 Tomcat下载4.2 Tomcat解压及系统变量配置 5. Redis安装5.1 Redis下载5.…

六西格玛绿带培训如何告别“走过场”?落地生根

近年来&#xff0c;六西格玛绿带培训已经成为了众多企业提升管理水平和员工技能的重要途径。然而&#xff0c;不少企业在实施六西格玛绿带培训时&#xff0c;往往陷入形式主义的泥潭&#xff0c;导致培训效果大打折扣。那么&#xff0c;如何避免六西格玛绿带培训变成“走过场”…

Java排序算法过程详解

标题 冒泡排序选择排序插入排序(抓牌)希尔排序归并排序 ​排序算法大体可分为两种&#xff1a; 1、比较排序&#xff0c;时间复杂度O(nlogn) ~ O(n^2)&#xff0c;主要有&#xff1a;冒泡排序&#xff0c;选择排序&#xff0c;插入排序&#xff0c;归并排序&#xff0c;堆排序&…

allure如何记录操作步骤,操作步骤不写在测试用例中,同样可以体现在allure报告,如何实现

嗨&#xff0c;我是兰若&#xff0c;今天写完用例&#xff0c;在运行用例并且生成报告的时候&#xff0c;发现报告里面没有具体的操作步骤&#xff0c;这可不行&#xff0c;如果没有具体的操作步骤的话&#xff0c;用例运行失败了&#xff0c;要怎么知道问题是出现在哪一个步骤…

【分布式数据仓库Hive】Hive的安装配置及测试

目录 一、数据库MySQL安装 1. 检查操作系统是否有MySQL安装残留 2. 删除残留的MySQL安装&#xff08;使用yum&#xff09; 3. 安装MySQL依赖包、客户端和服务器 4. MySQL登录账户root设置密码 5. 启动MySQL服务 6. 登录MySQL&#xff0c;进入数据库操作提示符 7. 授权H…