画布

画布是 meta2d 的核心,所有展示和交互都在画布上呈现。

创建画布

  1. 指定 html 的父 Element
// 提前设置好css样式,特别是大小位置
<div id="meta2d"></div>
  1. 在 js 中创建实例
// 'meta2d'为id或Element实例;options可选
var meta2d = new Meta2d('meta2d', options);

// 核心库将自动添加
// window.meta2d = meta2d;
  1. 根据业务,调用 meta2d api 开始使用
// 例如:打开一个meta2d格式文件
meta2d.open(json);

// 获取文件数据
const json = meta2d.data();

拖拽图形库

1. 创建图形库工具栏
创建图形库工具栏 html 元素,绑定拖拽事件或 touch 事件

<div class="tools">
  <div
    class="icon"
    draggable="true"
    ondragstart="onDragstart($event, menu)"
    onclick="onTouchstart($event, menu)"
    ontouchstart="onTouchstart($event, menu)"
  >
    <img src="xxx" />
    <div>Rectangle</div>
  </div>
</div>

2. 传递数据
在工具栏相应事件函数中,给 meta2d 传递 pen 对象数据即可

const pen = {
  name: 'rectangle',
  text: '矩形',
  width: 100,
  height: 100,
};

onDragstart = (e) => {
  e.dataTransfer.setData('Text', JSON.stringify(pen));
};

// 支持鼠标单击添加图形
import { deepClone } from '@meta2d/core';
onTouchstart = (e) => {
  meta2d.canvas.addCaches = deepClone([pen]);
};

Options 选项

名称类型描述
colorstring画笔默认颜色,如果没特别设置,颜色包括:文字和边框
activeColorstring画笔选中颜色
activeBackgroundstring画笔选中背景颜色
hoverColorstring鼠标移动到画笔上的颜色
hoverBackgroundstring鼠标移动到画笔上的背景颜色
anchorColorstring锚点颜色
anchorRadiusnumber锚点半径
anchorBackgroundstring锚点背景颜色
dockColorstring辅助线颜色
dragColorstring鼠标框选多个节点时,边框颜色
animateColorstring连线动画颜色
textColorstring文字颜色
fontFamilystring文字字体
fontSizenumber文字大小
lineHeightnumber文字行高
textAlignstring文字水平对齐方式
textBaselinestring文字垂直对齐方式
rotateCursorstring旋转控制点的鼠标样式
hoverCursorstring鼠标经过画笔的样式
disableInputboolean禁用双击弹出输入框
disableRotateboolean禁止旋转
disableAnchorboolean禁止设置锚点
alwaysAnchorboolean默认显示锚点
autoAnchorboolean连线时,自动选中节点锚点
disableEmptyLineboolean禁止存在两端关联缺少的连线
disableRepeatLineboolean禁止存在关联重复的连线
disableScaleboolean禁止画布缩放
disableTranslateboolean禁止画布移动
disableDockLineboolean取消辅助线
minScalenumber画布最小缩放比例
maxScalenumber画布最大缩放比例
keydownKeydownType快捷键监听对象,默认 document;-1 不监听快捷键,需在 Meta2d 初始化时配置
gridboolean是否显示网格
gridColorstring网格颜色
gridSizenumber网格大小
ruleboolean是否显示标尺
ruleColorstring标尺颜色
drawingLineNamestring默认连线类型名称
fromArrowstring默认连线起始箭头
toArrowstring默认连线终点箭头
autoPolylineboolean是否自动计算多线段锚点
intervalnumber绘画帧时长
animateIntervalnumber动画帧时长
dragAllInboolean框选画笔时,是否需要全部在框选区域内
scrollboolean默认是否显示滚动条。与默认缩放互斥
defaultAnchorsPoint[]默认图形的默认锚点,例如:正方形等。
moveConnectedLineboolean是否允许拖动连接线
mouseRightActiveboolean是否允许右键选中节点,默认true允许
disableClipboardboolean是否禁止系统剪切板,默认false不禁止
drawingLineLengthnumber画线过程中允许的最大长度,为0表示不限
disableTouchPadScalenumber是否禁止触控板双指缩放,默认false

默认值

  const defaultAnchors = [
    {
      x: 0.5,
      y: 0,
    },
    {
      x: 1,
      y: 0.5,
    },
    {
      x: 0.5,
      y: 1,
    },
    {
      x: 0,
      y: 0.5,
    },
  ],

文件数据

通过 meta2d.data() 函数获取,返回数据格式如下:

名称类型描述
colorstring画笔默认颜色,如果没特别设置,颜色包括:文字和边框
penBackgroundstring画笔默认背景色
activeColorstring画笔选中颜色
activeBackgroundstring画笔选中背景颜色
pensPen[]画笔数组
xnumber画布 x 偏移
ynumber画布 y 偏移
scalenumber画布缩放比例
originPoint画布原点
centerPoint画布缩放中心点
lockedLockState画布锁定
websocketstringwebsocket 通信地址
mqttstringmqtt 通信地址
mqttTopicsstringmqtt 订阅主题
backgroundstring画布背景颜色
socketCbJsstring消息通信回调函数 js 代码
initJsstring打开图纸后,执行的初始脚本
gridboolean是否显示网格
gridColorstring网格颜色
gridSizenumber网格大小
ruleboolean是否显示标尺
ruleColorstring标尺颜色
fromArrowstring默认起始箭头
toArrowstring默认终点箭头
lineWidthnumber默认线宽

成员属性

名称类型描述
canvasCanvas绘画画板
storeMeta2dStore绘画数据。包括文件数据和各种状态数据等
websocketWebSocket原生 WebSocket 客户端。仅连接成功才有实例
mqttClientMqtt.Clientmqtt.js 通信客户端

Meta2dStore

名称类型描述
idstring当前引擎实例 id。一个页面可以有多个可视化引擎实例
dataMeta2dData绘画(图纸)数据。包含自动计算的临时变量
pensObject(id: pen)画笔 map。方便检索 pen
activePen[]选中的画笔。数组
hoverPen鼠标经过活动的画笔。单 Pen
activeAnchorPoint选中的锚点
hoverAnchorPoint鼠标经过活动的锚点
animatesSet正在播放动画的 pen
dpiRationumber高清屏比例。一般用户不用修改此值
clipboardPen[]剪贴板内容
historiesEditAction[]撤消重做内容
historyIndexnumber撤消重做游标
optionsOptions可视化引擎选项

Function 函数

名称描述
constructor可视化引擎构造函数
setOptions设置引擎选项
getOptions获取引擎选项
resize重置画布大小
addPen添加单个画笔
addPens批量添加画笔
render渲染(重绘)
open打开图纸
connectSocket消息通信重连(默认自动连接)
drawLine开始钢笔绘画
drawingPencil开始铅笔绘画
stopPencil停止铅笔绘画
lock锁画布
finishDrawLine完成钢笔绘画
finishPencil完成铅笔绘画
updateLineType修改连线类型
addDrawLineFn添加自定义连线绘画函数
removeDrawLineFn移除自定义连线绘画函数
showMagnifier显示放大镜
hideMagnifier隐藏放大镜
toggleMagnifier显示或隐藏放大镜
clear清空画布资源。打开空白图纸用 open()
emit发送自定义消息
on监听消息
off取消监听消息
register注册画笔(Path2D 类型)
registerCanvasDraw注册原生 canvas 上下文画笔
registerAnchors注册画笔锚点函数
registerMoveDock注册移动辅助线算法
registerResizeDock注册修改大小辅助线算法
find查找画笔
getPenRect获取画笔区域位置
setPenRect设置画笔区域位置
startAnimate开始播放动画
pauseAnimate暂停动画
stopAnimate结束动画
calcAnimateDuration计算动画时长
combine组合
uncombine取消组合
active高亮选中画笔
inactive取消高亮选中画笔
delete删除画笔
scale缩放画布
translate平移画布
translatePens平移画笔
getParent获取画笔父对象
data图纸数据
copy复制
cut剪切
paste粘贴
undo撤消
redo恢复
connectWebsocket手动连接 websocket。默认自动连接
closeWebsocket关闭 websocket 连接
connectMqtt手动连接 mqtt 。默认自动连接
closeMqtt关闭 mqtt 连接
setValue设置修改画笔数据
pushHistory添加一个编辑历史到队列
showInput显示文字输入框
hideInput隐藏文字输入框
clearDropdownList清除画笔下拉列表选项
pushChildren给画笔添加子对象
toPng生成 png 图像
downloadPng下载 png
getRect获取图纸区域
fitView自适应屏幕显示
gotoView定位画笔到屏幕中心显示
centerView居中显示可视区域
hasView画布是否有内容
alignNodes节点对齐
spaceBetween水平等分对齐
spaceBetweenColumn垂直等分对齐
layout均匀分布排版
showMap显示鹰眼地图
hideMap隐藏鹰眼地图
toggleAnchorMode切换锚点模式
addAnchorHand添加锚点手柄
removeAnchorHand移除锚点手柄
toggleAnchorHand添加或移除锚点手柄
top置顶画笔
bottom置底画笔
up向上移动画笔图层
down向下移动画笔图层
setLayer指定画笔图层
changePenId修改画笔 id
getLines获取关联连线
nextNode获取下一个节点
previousNode获取前一个节点
toComponent生成自定义组件
setVisible设置图形的可见(包含子节点)
destroy销毁画布,清理资源内存。推荐调用
setBackgroundImage更改画布背景图片
setBackgroundColor更改画布背景颜色
setGrid更改画布背景网格
setRule更改画布标尺