Skip to content

DDeiStage

  DDeiStage代表一个舞台,一个舞台含有多个DDeiLayer(图层)。   DDeiStage实例包含了一个舞台的所有数据,以及渲染器,在获取后可以通过它访问其他内容。DDeiSheetDDei中都有stage属性,前者的关系是固定的,后者指向当前激活的画布。

  一个DDeiSheet实例至少包含一个DDeiStage实例。

  本篇最后提供的示例可以在文档中直接预览。

属性

属性名说明数据类型静态默认值备注
unicode唯一编号string系统生成自动编码
idIdx当前图形的ID种子number
layers图层集合DDeiLayer[]
layerIndex当前的图层下标number-1
selectedModels选中模型DDeiAbstractShape[]当前选中图形
ratio缩放比率number1.0
width画布宽度number
height画布高度number
wpv视窗开始点object(0,0,0)
spv纸张标量开始点object中心
mark水印object查看详情
paper纸张object查看详情
ruler标尺object查看详情
grid网格线object查看详情
ddInstanceDDei实例DDei
modelType模型类型stringDDeiStage

方法

static loadFromJSON

  将JSON转换为一个DDeiStage实例

参数

参数名类型范围默认值备注
jsonobject文件JSON数据
tempDataobject用于初始化的数据:

返回值

类型备注
DDeiStageDDeiStage实例

toJSON

  将DDeiStage实例转换为JSON对象

参数

  无

返回值

类型备注
JSON包含了DDeiStage所有信息的JSON对象

initRender

  初始化渲染器,并绑定

参数

  无

返回值

  无

calModelNumber

  计算并返回当前舞台的模型总数量

参数

  无

返回值

类型备注
number模型总数量

addLayer

  添加图层到舞台中

参数

参数名类型范围默认值备注
layerDDeiLayer/undefined图层,为空会初始化一个
layerIndexnumber/undefined位置下标,为空会添加到末尾
notifybooleantrue通知刷新,同步调整纸张区域大小等信息,并重绘画布

返回值

类型备注
DDeiLayer被添加的图层

changeLayer

  切换当前图层

参数

参数名类型范围默认值备注
layerIndexnumber位置下标

返回值

  无

removeLayer

  删除图层

参数

参数名类型范围默认值备注
layerIndexnumber位置下标,为空时移除当前图层
notifybooleantrue通知刷新,同步调整纸张区域大小等信息,并重绘画布

返回值

类型备注
DDeiLayer被删除的图层

displayLayer

  显示图层

参数

参数名类型范围默认值备注
layerIndexnumber下标
tempbooleanfalse临时显示

返回值

  无

hiddenLayer

  隐藏图层

参数

参数名类型范围默认值备注
layerIndexnumber下标

返回值

  无

addModel

  添加模型到当前图层

参数

参数名类型范围默认值备注
modelDDeiAbstractShape模型

返回值

  无

getModelById

  根据ID获取图形

参数

参数名类型范围默认值备注
idstringid
allLayerbooleanfalse默认当前图层,true所有图层

返回值

类型备注
DDeiAbstractShape/null图形实例

getModelsByBaseType

  根据类别获取图形

参数

参数名类型范围默认值备注
bmtstring模型类型来自modelType/baseModelType

返回值

类型备注
DDeiAbstractShape[]图形实例列表

removeModel

  删除当前图层模型

参数

参数名类型范围默认值备注
modelDDeiAbstractShape模型
destroybooleanfalse是否销毁

返回值

  无

removeModelById

  根据ID删除控件

参数

参数名类型范围默认值备注
idsstring[]id列表

返回值

  无

makeSelectModels

  选择控件

参数

参数名类型范围默认值备注
modelsDDeiAbstractShape[]/undefined选择的控件列表
cancelSelectOtherbooleantrue取消选择其他控件

cancelSelectModels

  取消选择图形

参数

参数名类型范围默认值备注
modelsDDeiAbstractShape[]/undefined模型列表
ignoreDDeiAbstractShape[]/undefined忽略模型列表

返回值

  无

clearModels

  清除当前画布所有控件

参数

参数名类型范围默认值备注
destroybooleanfalse是否及时销毁

返回值

  无

getLayerModels

  获取所有图层的模型

参数

参数名类型范围默认值备注
ignoreModelIdsstring[]忽略控件ID
levelnumber1遍历级别
rectobject有效区域矩阵

返回值

类型备注
DDeiAbstractShape[]结果,包含了满足所有条件的控件以及位置列表

searchModels

  根据属性搜索控件

参数

参数名类型范围默认值备注
keywordsstring搜索关键字
attrstring属性名称
isRegbooleanfalse是否正则表达式
areanumber1搜索范围1本页/2本文档/3所有打开文件
matchCasebooleanfalse区分大小写
matchAllbooleanfalse全字匹配

返回值

类型备注
Array搜索结果,包含了满足所有条件的控件以及位置列表

setStageRatio

  设置缩放比率

参数

参数名类型范围默认值备注
newValuenumber1.0缩放比率

返回值

  无

getStageRatio

  获取缩放比率

参数

  无

返回值

类型备注
number缩放比率

notifyChange

  通知改变,刷新画布

参数

  无

返回值

  无

toImageDataUrl

  返回画布图片

参数

参数名类型范围默认值说明
modelsDDeiAbstractShape[]模型,为空则返回整个画布的图片

返回值

类型备注
string图片的base64编码

示例

代码

vue
<script setup lang="ts">
import DDeiEditorView from "ddei-editor";
import {DDeiEditor,DDeiStage,DDeiLayer,DDeiCoreStandLayout,DDeiAbstractShape} from "ddei-editor";
import { defineComponent, markRaw,getCurrentInstance,ref } from "vue";
//获取主对象实例,代替this获取$refs
const {proxy} = getCurrentInstance()

const options = markRaw({
  config: { 
    "grid": 0, //网格线
    "background": { color: "blue", opacity: 0.1 }, //背景色
    initData: {
      controls: [
        {
          model: "102010",
          text: "初始化图形"
        },
      ]
    }
  },
  //配置扩展插件
  extensions: [
    //布局的配置
    DDeiCoreStandLayout.configuration({
      //配置插件
      'top': [],
      'middle': ['ddei-core-panel-canvasview'],
      'bottom': [],
      'left': [],
      'right': []
    }),
  ],
})

const createControl = () => {
  //获取编辑器 
  let editor:DDeiEditor = proxy.$refs["ddei_editor_api_3"].editor;
  let stage:DDeiStage = editor.files[0].sheets[0].stage
  //添加控件
  editor.addControls([
        {
          id:"control_1",
          model: "102010",
          text: "新图形"
        },
      ]);
};
const removeControl = () => {
  //获取编辑器 
  let editor:DDeiEditor = proxy.$refs["ddei_editor_api_3"].editor;
  let stage:DDeiStage = editor.files[0].sheets[0].stage
  //删除控件
  stage?.removeModelById(["control_1"])
};

const addLayer = () => {
  //获取编辑器 
  let editor:DDeiEditor = proxy.$refs["ddei_editor_api_3"].editor;
  let stage:DDeiStage = editor.files[0].sheets[0].stage
  //添加图层
  let newLayer:DDeiLayer = stage.addLayer(null,0);
  newLayer.initRender();
};
const removeLayer = () => {
  //获取编辑器 
  let editor:DDeiEditor = proxy.$refs["ddei_editor_api_3"].editor;
  //获取舞台
  let stage:DDeiStage = editor.files[0].sheets[0].stage
  //删除图层
  stage.removeLayer(0);
};

</script>

<template>

<button @click="addLayer" style="border:1px solid grey;margin-left:5px;padding:5px">新增图层</button>
<button @click="removeLayer" style="border:1px solid grey;margin-left:5px;padding:5px">删除图层</button>
<button @click="createControl" style="border:1px solid grey;margin-left:5px;padding:5px">创建控件</button>
<button @click="removeControl" style="border:1px solid grey;margin-left:5px;padding:5px">删除控件</button>

<div style="width:400px;height:400px;margin:100px auto;">
  <DDeiEditorView :options="options" ref="ddei_editor_api_3" id="ddei_editor_api_3"></DDeiEditorView>
</div>
</template>

效果预览

技术支持

QQ:3697355039
微信公众号:ddei757