开源可视化引擎 Meta2d.js 实战 - 属性设定

meta2d的 Pen 被称为图元,(个人比较习惯称为组件)有很多属性。有些属性对图形的形状产生影响,有些属性则能够控制图形的的外观表现样式。我习惯将这些属性分为3类:

  1. 形状,与外在整体表现方面相关的属性,比如宽、高、旋转、进度等
  2. 样式,与美化相关的属性,比如颜色、内外边距、背景图片、边框样式等
  3. 文字,组件的label文字的设定,文字相关的字体、字号、颜色、对齐方式等。单独提取出来是因为更利于我们理解和使用。

一、基本形状

我将宽度、高度、旋转、组件的可见性等,视为基本形状范畴。

1、视频感受

2、属性设定方法: setValue

我们需要了解meta2d提供了设置pen对象属性值的方法: setValue,该方法由引擎对象实例提供。在我的一篇文章 开源可视化引擎 Meta2d.js 实战 - 实时数据通信逻辑分析与实现中已介绍,我们再来回顾其内容:

ts 复制代码
// core.js 中定义
setValue(data: IValue, { render, doEvent, history, }?: {
    render?: boolean;
    doEvent?: boolean;
    history?: boolean;
}): void;


// 来看IValue定义
export declare type IValue = Pen & Partial<ChartData> & Partial<Record<'tag' | 'newId', string>> & {
    [key: string]: any;
};

需要重点了解这3个参数:

2.1 data

参数data,代表数据对象本身,也就是Pen对象。其中必须包含id或者tag属性,以便引擎确定更新的是哪个pen。假如我们要设定pen的宽度为120,data对象应该这样定义:

ts 复制代码
{
    id: 'pen的id',
    width: 120    // 要设定的新值
}

2.2 render

render参数,表示如果你更新完成组件的属性值后,是否需要再更新canvas视图。通常建议,如果更新单个属性,则设定为true;如果一次性更新多个属性,则设定为false。在更新完成所有属性后。再调用核心api的render方法,集中一次更新视图。

2.3 history

history参数,代表了你在调用setValue方法时,是否需要放入操作的历史记录中去。设定为true,则meta2d则会记录此次操作的前后结果,从而支持我们调用核心库的回退、重做的功能api,来让canvas在界面上对用户的操作进行回退、重做的响应。

3、部分属性说明

3.1 基本属性

  1. 宽度 width
  2. 高度 height
  3. 旋转 rotate
  4. 是否可见 visible

3.2 进度相关

  1. 百分比 progress
  2. 颜色 progressColor
  3. 是否垂直显示 verticalProgress

二、样式

1、视频感受

2、属性说明

pen的类型,被分为2类:线条类型和图形类型

2.1 图形类型的样式相关的部分属性

  1. 边框宽度 lineWidth
  2. 边框圆角 borderRadius
  3. 边框线条类型 lineDash
  4. 内边距 paddingTop/paddingBottom/paddingLeft/paddingRight
  5. 颜色 color
  6. 填充色 background
  7. 背景图片 image

2.2 线条类型的部分样式属性

  1. 线粗细 lineWidth
  2. 线颜色 color
  3. 边框宽度 borderWidth,在meta2d中,线条也是有边框的。这是为了支持线条的动画表现。
  4. 边框颜色 borderColor
  5. 线条类型 lineDash
  6. 弯曲类型 lineName
  7. 起点形状 fromArrow
  8. 终点形状 toArrow

三、文字

1、视频感受

2、属性说明

  1. 文字内容 text
  2. 显示文字 hiddenText
  3. 字号 fontSize
  4. 字体 fontFamily
  5. 颜色 textColor
  6. 背景色 textBackground
  7. 水平对齐 textAlign
  8. 垂直对齐 textBaseline
  9. 左右偏移 textLeft
  10. 上下偏移 textTop
相关推荐
极光代码工作室5 天前
基于数据仓库的电商数据分析平台
大数据·hadoop·python·spark·数据可视化
柳杉5 天前
我用Threejs 搓了一个 3D 中国地图设计器,开箱即用
前端·three.js·数据可视化
小的博客7 天前
Oh-My-Posh安装及使用
学习·数据可视化
周庆猛10 天前
Babylon.js 多灯场景在 Windows 上报错:VERTEX shader uniform block count exceeds GL_MAX_VE
前端·数据可视化
一晌小贪欢10 天前
第26节:自动化办公——利用 Python 自动生成动态分析报告 (PPT/PDF)
开发语言·python·数据分析·自动化·powerpoint·pandas·数据可视化
山海鲸实战案例分享10 天前
【数字孪生实战案例】怎样为二维孪生组件新增测绘功能?~山海鲸可视化
数字孪生·数据可视化·零代码·测绘·实战案例·山海鲸可视化·二维孪生
小哈机器人10 天前
Phantom Bridge:一个基于WebRTC的ROS2远程可视化与遥操作工具
机器人·webrtc·数据可视化
极光代码工作室11 天前
基于数据分析的电影票房预测系统
大数据·python·数据分析·spark·数据可视化
一晌小贪欢12 天前
第22节:相关性分析——协方差、相关系数与热力图解读
开发语言·python·数据分析·pandas·数据可视化