00 小结

当我们在 zrender.init(document.getElementById(“canvas”))时,首先实例化了一个 ZRender 实例,在这个实例化过程中,主要实例化了:

  • Storage 类,作用类似于全局状态管理
  • Painter 类,可以理解为画笔(渲染模式),目前支持svg和canvas模式,默认是canvas
  • Handler 类,先简单理解为用户处理器,它把数据storage和画笔painter的实例都传进去了
  • Animation 类,简单理解为处理图形的位置,形状

在实例化过程中,还遇到了几个文档描述比较模糊但很有用的参数:useDirtyRect,useCoarsePointer,usePointerSize。

01 代码分析

代码太长,部分省略,只分析主流程

// src/zrender.ts
export interface ZRenderInitOpt {renderer?: string   // 'canvas' or 'svgdevicePixelRatio?: numberwidth?: number | string // 10, 10px, 'auto'height?: number | stringuseDirtyRect?: booleanuseCoarsePointer?: 'auto' | booleanpointerSize?: numberssr?: boolean   // If enable ssr mode.
}class ZRender {dom?: HTMLElement // 如果是ssr-svg渲染,可以不用传domid: numberstorage: Storage        // 数据中心painter: PainterBase    // 视图handler: Handler        // 事件处理animation: Animation    // 动画constructor(id: number, dom?: HTMLElement, opts?: ZRenderInitOpt) {// 初始化储存中心和画布相关属性opts = opts || {};this.dom = dom;this.id = id;const storage = new Storage();let rendererType = opts.renderer || 'canvas';if (!painterCtors[rendererType]) {// 使用第一个注册的渲染器rendererType = zrUtil.keys(painterCtors)[0];}// 如果不是生成环境 抛出错误,												

源码解读之zrender-ZRender 类(3)相关推荐

  1. ORB SLAM2源码解读(三):Frame类

    文章目录 前言 构造函数 双目相机 RGBD相机 单目相机 ExtractORB:提取特征点 ComputeBoW:计算词袋数据 SetPose:设置相机外参 isInFrustum:判断一个MapP ...

  2. jpcsp源码解读之三:Screen类

    该类的成员变量只有4个: 屏幕的长,宽,一个守护线程DisableScreenSaverThread,还有一个lastPowerTick.注意他们都是static的. lastPowerTick可以理 ...

  3. jpcsp源码解读之四:Clock类

    时钟类的行为: 当用户请求时,就返回当前时间与初始时间的差值. 注意,这是一个模拟器,该类就是模拟目标机器psp的时钟.该类的用户,就是运行于psp机器上的软件(应该是系统软件才会直接从硬件提取时钟信 ...

  4. Qwt源码解读之平移操作类

    Qwt 提供了对图形部件的平移操作,其实就是在平移时,通过将图形绘制在另一个部件(QWidget)上实现了平移的效果(抓取).这一切都是通过Qt的事件机制实现的. QwtPanner类:提供平移操作, ...

  5. Neural-Motifs 源码解读(3):RelModel类

    GitHub: neural-motifs 1. 得到edge_ctx obj_feature_map LinearizedContext fmap,rois obj_fmaps rm_obj_dis ...

  6. Neural-Motifs 源码解读(2):LinearizedContext类

    GitHub: neural-motifs 主体框架: obj_fmaps obj_feats rm_obj_dists rm_box_priors obj_ctx obj_ctx obj_dists ...

  7. Neural-Motifs 源码解读(1):ObjectDetector类

    GitHub: neural-motifs 1. 得到fmap feature_map Image fmap 图片x经过feature_map()操作得到大小为[batch_size, rpn_inp ...

  8. 【Unity】 Spine渲染原理解析与源码解读

    Spine渲染原理解析与源码解读 安装环境 从Spine编辑器导出 将资源导入Unity 基础概念 其他相关概念 Spine架构 Spine运行时的各个模块 有状态(Stateful) 和 无状态(S ...

  9. 【JVM】Java类加载器设计原理(ClassLoader源码解读/ SPI机制/ 绕开双亲委派/ 常见Java虚拟机)

    目录 1. 什么是类加载器 2. 类加载器加载的过程 3. Class文件读取来源 4. 类加载器的分类 5. 那些操作会初始化类加载器 6. 类加载器的双亲委派机制 6.1 双亲委派机制机制的好处 ...

  10. Bert系列(三)——源码解读之Pre-train

    https://www.jianshu.com/p/22e462f01d8c pre-train是迁移学习的基础,虽然Google已经发布了各种预训练好的模型,而且因为资源消耗巨大,自己再预训练也不现 ...

最新文章

  1. sdut 2401 最大矩形面积
  2. eclipse 创建maven 项目 动态web工程完整示例
  3. 一种快速统计SQL Server每个表行数的方法
  4. 项目开发环境(h5+pc的开发思路是一样的)
  5. 用Paint Tool SAI绘制漫画
  6. leetcode LCP 19. 秋叶收藏集(dp)
  7. SAP License:BCS进阶第五篇-BCS合并现金流量表的实现
  8. (原创)javascript进阶(三)
  9. 白话使用zookeeper作为注册中心搭建微服务
  10. vue日历排班组件_VUE实现日历组件功能
  11. Cisco Packet Tracer 子网划分实验
  12. 深入理解Java类加载器(2):线程上下文类加载器
  13. matlab提取电压基波分量,有源电力滤波器三种基波提取方法的对比分析
  14. 牛客练习赛50 F tokitsukaze and Another Protoss and Zerg(分治NTT)
  15. 苹果发布会2014发布会简单总结
  16. 记录一次Visual Studio运行webservice调用中控打卡机出现的问题
  17. 如何用Sublime text 快捷的打出HTML格式
  18. jenkins api java封装_Jenkins api java 调用
  19. 推荐系统特征工程的万字理论
  20. 正则抓取猫眼TOP100电影的海报

热门文章

  1. Node npm包管理器介绍
  2. 程序员的马斯洛需求层次
  3. 理工男生资源达人的梦想,树莓派低成本创造私人专属互联网的构想及实现
  4. Day_04 Vue学习
  5. MATLAB台大郭彦甫老师课程笔记:第十一课:线性回归方程式与线性系统
  6. 【学术相关】清华教授发文劝退读博:​​我见过太多博士生精神崩溃、心态失衡、身体垮掉、一事无成!...
  7. 一键部署安装的LAMP单独升级PHP
  8. ar9485 linux驱动下载,下载:AMD显卡Linux催化剂驱动9.6版
  9. 前后端分离情况下pdf文件在浏览器中预览的实现
  10. 计算机网络(严伟 潘爱民)通过课后题总结学习网络 --持续更新