ECharts渲染引擎ZRender
Author:zhoulujun Date:
之前讲过 《Canvas 2D图形操作:fabricjs/konvajs/pixijs对比总结》
ZRender 是二维绘图引擎,是轻量级的 Canvas 类库,它提供 Canvas、SVG、VML 等多种渲染方式,它可以用于绘制各种图形,包括线条、矩形、圆形、多边形等。echarts的渲染器就是ZRender。
ZRender 封装了前端 canvas 的绘制逻辑,通过上层的接口去操作底层的绘制功能。从而屏蔽不同环境的差异性,提供统一的访问方式,并提供更高级的图形元素的绘制功能,方便使用者的调度,这都是封装的特点。
https://github.com/ecomfe/zrender
zrender整体架构
zrender采用了MVC封装,M为Model数据层,V为View视图层,C为Controller控制层:
Storage(M):Storage为zrender中的Model层,它主要进行图形数据的增删改查(CRUD)操作;
Painter(V):Painter为zrender中的View层,它主要对canvas元素的生命周期进行管理,渲染视图以及控制更新等。定义了addHover、setBackgroundColor等方法;
Handler(C):Handler为zrender中的Controller层,它主要实现事件交互处理,实现完整dom事件的模拟封装。
目录介绍
文件夹:
animation 动画有关;
contain 包含判断;
container Group.js 元素组的概念;
core 核心代码,包含一些工具(util.js)、事件(event.js)、唯一ID(guid.js)、矩阵运算有关(matrix.js)等;
dom HandleProxy.js dom事件有关;
graphic 图形有关,shape文件夹下就是各个图形的js文件;
mixin 混入模式要混入的函数;
tool 工具函数,包括颜色工具(color.js),path工具(path.js)和转换工具(transformPath.js);
vml IE中的画笔,vml解释
全局的文件:
config.js 配置文件
Element.js 元素文件作为zrender最基本的元素
Handle.js C层,控制层
Layer.js 图层管理
Painter.js V层,视图层
Storage.js M层,数据管理层
zrender.js 入口
图形
处于graphic文件夹下,zrender定义了一系列图形,供外界调用,包括圆形、矩形、心形、扇形、多边形、折线等,echarts通过调用zrender定义好的图形,可以很便捷地完成图表渲染。
ZRender 中分别通过 Line、Rect、Circle 绘制直线、矩形、圆形、多边形
const render = zrender.init(document.getElementById('paper')); const stokeStyle = { stroke: 'red', lineWidth: 1, fill: null, }; line = new zrender.Line({ shape: { x1: 0, y1: 0, x2: 100, y2: 100, }, style: stokeStyle, }); const rrect = new zrender.Rect({ shape: { x: 25, y: 25, r: [5, 10, 5, 10], width: 50, height: 50, }, style: stokeStyle, }); const circle = new zrender.Circle({ shape: { cx: 50, cy: 50, r: 50, }, style: stokeStyle, }); const polyline = new zrender.Polyline({ shape: { points: [ [0, 50], [10, 60], [20, 40], [30, 80], [40, 20], [50, 50], [60, 40], [100, 40], ], }, style: stokeStyle, }); render.add(polyline);
圆弧、椭圆、贝塞尔曲线分别由 Arc、Ellipse、BezierCurve 绘制。
参考文章:
echarts源码解读《一》:zrender源码概要分析 http://qiuruolin.cn/2019/05/20/echarts-1/
转载本站文章《ECharts渲染引擎ZRender》,
请注明出处:https://www.zhoulujun.cn/html/webfront/visualization/charts/9237.html