vislite 1.12.0 → 1.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (179) hide show
  1. package/AUTHORS.txt +6 -6
  2. package/CHANGELOG +408 -403
  3. package/LICENSE +20 -20
  4. package/README-en.md +245 -245
  5. package/README.md +245 -245
  6. package/bin/formatArgv.js +30 -30
  7. package/bin/help.js +17 -17
  8. package/bin/run +21 -21
  9. package/bin/skills.js +26 -26
  10. package/lib/BarLayout/index.es.js +348 -348
  11. package/lib/Buffer/index.es.js +34 -34
  12. package/lib/Canvas/index.es.js +804 -804
  13. package/lib/Cardinal/index.es.js +89 -89
  14. package/lib/Eoap/index.es.js +32 -32
  15. package/lib/Hermite/index.es.js +34 -34
  16. package/lib/MapCoordinate/index.es.js +199 -199
  17. package/lib/Matrix4/index.es.js +123 -123
  18. package/lib/Mercator/index.es.js +18 -18
  19. package/lib/PieLayout/index.es.js +115 -115
  20. package/lib/RawCanvas/index.es.js +736 -736
  21. package/lib/SVG/index.es.js +626 -626
  22. package/lib/Shader/index.es.js +34 -34
  23. package/lib/Texture/index.es.js +52 -52
  24. package/lib/TreeLayout/index.es.js +301 -301
  25. package/lib/animation/index.es.js +2 -2
  26. package/lib/assemble/index.es.js +19 -19
  27. package/lib/getLoopColors/index.es.js +34 -34
  28. package/lib/getWebGLContext/index.es.js +61 -61
  29. package/lib/index.umd.js +2797 -2797
  30. package/lib/index.umd.min.js +1 -1
  31. package/lib/initOption/index.es.js +5 -5
  32. package/lib/mergeOption/index.es.js +34 -34
  33. package/lib/move/index.es.js +6 -6
  34. package/lib/rotate/index.es.js +6 -6
  35. package/lib/ruler/index.es.js +136 -136
  36. package/lib/scale/index.es.js +5 -5
  37. package/minialipay/ui-canvas/drawImage.js +35 -35
  38. package/minialipay/ui-canvas/index.acss +4 -4
  39. package/minialipay/ui-canvas/index.axml +3 -3
  40. package/minialipay/ui-canvas/index.d.ts +1 -1
  41. package/minialipay/ui-canvas/index.js +100 -100
  42. package/minialipay/ui-canvas/index.json +6 -6
  43. package/miniprogram/ui-canvas/drawImage.js +35 -35
  44. package/miniprogram/ui-canvas/index.js +125 -125
  45. package/miniprogram/ui-canvas/index.json +4 -4
  46. package/miniprogram/ui-canvas/index.wxml +4 -4
  47. package/miniprogram/ui-canvas/index.wxss +5 -5
  48. package/package/BarLayout/index.ts +2 -2
  49. package/package/Buffer/index.ts +2 -2
  50. package/package/Canvas/index.ts +2 -2
  51. package/package/Cardinal/index.ts +2 -2
  52. package/package/Eoap/index.ts +2 -2
  53. package/package/Hermite/index.ts +2 -2
  54. package/package/MapCoordinate/index.ts +2 -2
  55. package/package/Matrix4/index.ts +2 -2
  56. package/package/Mercator/index.ts +2 -2
  57. package/package/PieLayout/index.ts +2 -2
  58. package/package/RawCanvas/index.ts +2 -2
  59. package/package/SVG/index.ts +2 -2
  60. package/package/Shader/index.ts +2 -2
  61. package/package/Texture/index.ts +2 -2
  62. package/package/TreeLayout/index.ts +2 -2
  63. package/package/animation/index.ts +5 -5
  64. package/package/assemble/index.ts +2 -2
  65. package/package/getLoopColors/index.ts +2 -2
  66. package/package/getWebGLContext/index.ts +40 -40
  67. package/package/index.ts +84 -84
  68. package/package/initOption/index.ts +2 -2
  69. package/package/mergeOption/index.ts +2 -2
  70. package/package/move/index.ts +2 -2
  71. package/package/rotate/index.ts +2 -2
  72. package/package/ruler/index.ts +2 -2
  73. package/package/scale/index.ts +2 -2
  74. package/package/throttle/index.ts +2 -2
  75. package/package.json +79 -79
  76. package/skills/vislite-lib/BarLayout.md +117 -117
  77. package/skills/vislite-lib/Canvas.md +183 -183
  78. package/skills/vislite-lib/Interpolation.md +129 -129
  79. package/skills/vislite-lib/Matrix.md +174 -174
  80. package/skills/vislite-lib/PieLayout.md +131 -131
  81. package/skills/vislite-lib/Projections.md +158 -158
  82. package/skills/vislite-lib/SKILL.md +179 -179
  83. package/skills/vislite-lib/SVG.md +137 -137
  84. package/skills/vislite-lib/TreeLayout.md +176 -176
  85. package/skills/vislite-lib/Utilities.md +261 -261
  86. package/skills/vislite-lib/WebGL.md +106 -106
  87. package/skills/vislite-lib/minialipay/ui-canvas.md +95 -95
  88. package/skills/vislite-lib/miniprogram/ui-canvas.md +98 -98
  89. package/skills/vislite-lib/uniapp/ui-canvas.md +113 -113
  90. package/src/Canvas.ts +89 -89
  91. package/src/Eoap.ts +66 -66
  92. package/src/Matrix4/index.ts +84 -84
  93. package/src/Matrix4/move.ts +12 -12
  94. package/src/Matrix4/rotate.ts +15 -15
  95. package/src/Matrix4/scale.ts +11 -11
  96. package/src/Matrix4/transform.ts +64 -64
  97. package/src/Mercator.ts +27 -27
  98. package/src/SVG.ts +86 -86
  99. package/src/common/assemble.ts +30 -30
  100. package/src/common/canvas/arc.ts +51 -51
  101. package/src/common/canvas/config.ts +176 -176
  102. package/src/common/canvas/default.ts +64 -64
  103. package/src/common/canvas/gradient.ts +31 -31
  104. package/src/common/canvas/index.ts +189 -189
  105. package/src/common/canvas/painter.ts +475 -475
  106. package/src/common/canvas/texts.ts +18 -18
  107. package/src/common/map/getBoundary.ts +15 -15
  108. package/src/common/map/tool.ts +29 -29
  109. package/src/common/option.ts +31 -31
  110. package/src/common/setStyle.ts +5 -5
  111. package/src/common/svg/config.ts +213 -213
  112. package/src/common/svg/default.ts +29 -29
  113. package/src/common/svg/gradient.ts +53 -53
  114. package/src/common/svg/index.ts +420 -420
  115. package/src/common/svg/tool.ts +51 -51
  116. package/src/common/tree/index.ts +25 -25
  117. package/src/common/tree/toInnerTree.ts +61 -61
  118. package/src/common/tree/toPlainTree.ts +135 -135
  119. package/src/common/type.ts +26 -26
  120. package/src/common/webgl/buffer.ts +79 -79
  121. package/src/common/webgl/getWebGLContext.ts +45 -45
  122. package/src/common/webgl/shader.ts +75 -75
  123. package/src/common/webgl/texture.ts +98 -98
  124. package/src/coordinate/MapCoordinate.ts +80 -80
  125. package/src/getLoopColors.ts +42 -42
  126. package/src/interpolation/Cardinal.ts +110 -110
  127. package/src/interpolation/Hermite.ts +65 -65
  128. package/src/layout/BarLayout.ts +249 -249
  129. package/src/layout/PieLayout.ts +146 -146
  130. package/src/layout/TreeLayout.ts +200 -200
  131. package/src/move.ts +7 -7
  132. package/src/rotate.ts +7 -7
  133. package/src/ruler.ts +209 -209
  134. package/src/scale.ts +6 -6
  135. package/types/Bar.d.ts +91 -91
  136. package/types/BarConfig.d.ts +4 -4
  137. package/types/BarLayout.d.ts +48 -48
  138. package/types/BarOption.d.ts +31 -31
  139. package/types/Buffer.d.ts +30 -30
  140. package/types/Canvas.d.ts +379 -379
  141. package/types/CanvasConfig.d.ts +61 -61
  142. package/types/CanvasOption.d.ts +13 -13
  143. package/types/CanvasOpts.d.ts +9 -9
  144. package/types/Cardinal.d.ts +20 -20
  145. package/types/Gradient.d.ts +20 -20
  146. package/types/Hermite.d.ts +25 -25
  147. package/types/Map.d.ts +9 -9
  148. package/types/MapConfig.d.ts +27 -27
  149. package/types/MapCoordinate.d.ts +22 -22
  150. package/types/Matrix4.d.ts +79 -79
  151. package/types/Pie.d.ts +73 -73
  152. package/types/PieConfig.d.ts +26 -26
  153. package/types/PieLayout.d.ts +40 -40
  154. package/types/PieOption.d.ts +21 -21
  155. package/types/SVG.d.ts +282 -282
  156. package/types/SVGConfig.d.ts +54 -54
  157. package/types/Shader.d.ts +22 -22
  158. package/types/Texture.d.ts +22 -22
  159. package/types/Tree.d.ts +74 -74
  160. package/types/TreeConfig.d.ts +52 -52
  161. package/types/TreeLayout.d.ts +71 -71
  162. package/types/TreeOption.d.ts +48 -48
  163. package/types/animation.d.ts +26 -26
  164. package/types/assemble.d.ts +14 -14
  165. package/types/getLoopColors.d.ts +13 -13
  166. package/types/getWebGLContext.d.ts +7 -7
  167. package/types/index.d.ts +220 -220
  168. package/types/module.d.ts +110 -110
  169. package/types/move.d.ts +15 -15
  170. package/types/option.d.ts +12 -12
  171. package/types/painterConfig.d.ts +14 -14
  172. package/types/rotate.d.ts +15 -15
  173. package/types/ruler.d.ts +24 -24
  174. package/types/scale.d.ts +15 -15
  175. package/types/throttle.d.ts +6 -6
  176. package/types/ui-canvas.d.ts +4 -4
  177. package/types/uni-canvas.d.ts +3 -3
  178. package/uni-app/drawImage.js +19 -19
  179. package/uni-app/ui-canvas.vue +295 -295
@@ -1,180 +1,180 @@
1
- ---
2
- name: vislite-lib
3
- description: "VISLite数据可视化库开发助手。当用户需要创建Canvas/SVG/WebGL图表、实现树布局/饼图/柱状图布局、使用坐标投影(墨卡托/等角斜方位)、矩阵变换、插值函数等可视化算法时使用。"
4
- ---
5
-
6
- # VISLite 数据可视化库
7
-
8
- VISLite 是一款轻量、优雅的跨端数据可视化解决方案,支持 Web、uni-app、微信小程序、支付宝小程序等多平台。
9
-
10
- **官网**: [https://oi-contrib.github.io/VISLite](https://oi-contrib.github.io/VISLite)
11
-
12
- **GitHub**: [https://github.com/oi-contrib/VISLite](https://github.com/oi-contrib/VISLite)
13
-
14
- ## 安装
15
-
16
- ```bash
17
- npm install --save vislite
18
- ```
19
-
20
- ## 模块索引
21
-
22
- ### 画笔 (Brushes)
23
-
24
- #### 跨平台 Canvas(H5 / 微信 / 支付宝 / uni-app)
25
- - [Canvas.md](Canvas.md) - 统一 API,初始化方式因平台而异
26
- - [minialipay/ui-canvas.md](minialipay/ui-canvas.md) - 支付宝小程序 Canvas 组件
27
- - [miniprogram/ui-canvas.md](miniprogram/ui-canvas.md) - 微信小程序 Canvas 组件
28
- - [uniapp/ui-canvas.md](uniapp/ui-canvas.md) - uni-app 跨平台使用指南
29
-
30
- #### H5 专用画笔
31
- - [SVG.md](SVG.md) - SVG 矢量图形绘制(仅 H5)
32
- - [WebGL.md](WebGL.md) - WebGL 3D 图形渲染(仅 H5)
33
-
34
- ### 布局算法 (Layouts)
35
-
36
- - [TreeLayout.md](TreeLayout.md) - 树状布局,支持 TB/LR/RL/BT 方向
37
- - [PieLayout.md](PieLayout.md) - 饼图/环形图布局
38
- - [BarLayout.md](BarLayout.md) - 柱状图/条形图布局
39
-
40
- ### 坐标投影 (Projections)
41
-
42
- - [Projections.md](Projections.md) - Mercator 墨卡托投影、Eoap 等角斜方位投影、MapCoordinate 地图坐标系
43
-
44
- ### 变换与插值
45
-
46
- - [Matrix.md](Matrix.md) - 4x4 矩阵变换(平移/旋转/缩放)
47
- - [Interpolation.md](Interpolation.md) - Cardinal/Hermite 三次插值函数
48
-
49
- ### 工具函数
50
-
51
- - [Utilities.md](Utilities.md) - ruler 刻度尺、animation 动画、getLoopColors 循环颜色、throttle 节流、initOption/mergeOption 配置处理
52
-
53
- ## 画笔平台支持说明
54
-
55
- | 画笔 | H5 | 微信小程序 | 支付宝小程序 | uni-app |
56
- |------|-----|-----------|-------------|----------|
57
- | Canvas | ✅ `new Canvas(el)` | ✅ 组件方式 | ✅ 组件方式 | ✅ 组件方式 |
58
- | SVG | ✅ `new SVG(el)` | ❌ | ❌ | ❌ |
59
- | WebGL | ✅ `getWebGLContext()` | ❌ | ❌ | ❌ |
60
- | RawCanvas | ✅ | ✅ | ✅ | ✅ |
61
-
62
- **注意**: SVG 和 WebGL 仅支持 H5 端。Canvas 在不同平台的 API 完全一致,但初始化方式不同:
63
- - **H5**: `new Canvas(domElement)`
64
- - **小程序**: 通过 ui-canvas 组件的 `fetch()` 方法获取实例
65
-
66
- ## 快速使用
67
-
68
- ### H5 端使用 Canvas
69
-
70
- ```js
71
- import { Canvas } from 'vislite';
72
-
73
- var painter = new Canvas(document.getElementById('root'));
74
-
75
- painter.config({
76
- fillStyle: "red"
77
- }).fillCircle(200, 150, 100);
78
-
79
- // 设置区域用于交互
80
- painter.setRegion('circle');
81
- painter.bind('click', (regionName, x, y) => {
82
- console.log(regionName, x, y);
83
- });
84
- ```
85
-
86
- ### 小程序端使用 Canvas
87
-
88
- 详见各小程序平台的文档:
89
- - [微信小程序 Canvas](miniprogram/ui-canvas.md)
90
- - [支付宝小程序 Canvas](minialipay/ui-canvas.md)
91
- - [uni-app Canvas](uniapp/ui-canvas.md)
92
-
93
- ### 树布局
94
-
95
- ```js
96
- import { Canvas, TreeLayout } from 'vislite';
97
-
98
- var treeLayout = new TreeLayout();
99
- treeLayout.setOption({
100
- type: "rect",
101
- direction: "TB",
102
- x: 250,
103
- y: 20,
104
- width: 500,
105
- height: 260
106
- });
107
-
108
- var tree = treeLayout.use(data);
109
-
110
- // 绘制连线
111
- for (var key in tree.node) {
112
- var pid = tree.node[key].pid;
113
- if (pid) {
114
- painter.beginPath()
115
- .moveTo(tree.node[key].left, tree.node[key].top)
116
- .bezierCurveTo(...)
117
- .stroke();
118
- }
119
- }
120
-
121
- // 绘制节点
122
- painter.fullCircle(tree.node[key].left, tree.node[key].top, 10);
123
- ```
124
-
125
- ## 核心导出
126
-
127
- ```js
128
- import {
129
- // 画笔
130
- Canvas, // 跨平台(初始化方式不同)
131
- SVG, // 仅 H5
132
- RawCanvas, // 跨平台
133
-
134
- // 布局
135
- TreeLayout,
136
- PieLayout,
137
- BarLayout,
138
-
139
- // 投影
140
- Mercator,
141
- Eoap,
142
- MapCoordinate,
143
-
144
- // 变换
145
- Matrix4,
146
- rotate,
147
- move,
148
- scale,
149
-
150
- // 插值
151
- Cardinal,
152
- Hermite,
153
-
154
- // 工具
155
- ruler,
156
- animation,
157
- getLoopColors,
158
- throttle,
159
- assemble,
160
-
161
- // WebGL(仅 H5)
162
- getWebGLContext,
163
- Shader,
164
- Texture,
165
- Buffer,
166
-
167
- // 配置项
168
- initOption,
169
- mergeOption
170
- } from 'vislite';
171
- ```
172
-
173
- ## 典型场景
174
-
175
- - 创建跨平台图表(柱状图、饼图、树图)
176
- - 地图可视化(墨卡托/等角斜方位投影)
177
- - 画布/SVG/WebGL 图形绑制
178
- - 数据可视化算法应用
179
- - 矩阵变换与插值计算
1
+ ---
2
+ name: vislite-lib
3
+ description: "VISLite数据可视化库开发助手。当用户需要创建Canvas/SVG/WebGL图表、实现树布局/饼图/柱状图布局、使用坐标投影(墨卡托/等角斜方位)、矩阵变换、插值函数等可视化算法时使用。"
4
+ ---
5
+
6
+ # VISLite 数据可视化库
7
+
8
+ VISLite 是一款轻量、优雅的跨端数据可视化解决方案,支持 Web、uni-app、微信小程序、支付宝小程序等多平台。
9
+
10
+ **官网**: [https://oi-contrib.github.io/VISLite](https://oi-contrib.github.io/VISLite)
11
+
12
+ **GitHub**: [https://github.com/oi-contrib/VISLite](https://github.com/oi-contrib/VISLite)
13
+
14
+ ## 安装
15
+
16
+ ```bash
17
+ npm install --save vislite
18
+ ```
19
+
20
+ ## 模块索引
21
+
22
+ ### 画笔 (Brushes)
23
+
24
+ #### 跨平台 Canvas(H5 / 微信 / 支付宝 / uni-app)
25
+ - [Canvas.md](Canvas.md) - 统一 API,初始化方式因平台而异
26
+ - [minialipay/ui-canvas.md](minialipay/ui-canvas.md) - 支付宝小程序 Canvas 组件
27
+ - [miniprogram/ui-canvas.md](miniprogram/ui-canvas.md) - 微信小程序 Canvas 组件
28
+ - [uniapp/ui-canvas.md](uniapp/ui-canvas.md) - uni-app 跨平台使用指南
29
+
30
+ #### H5 专用画笔
31
+ - [SVG.md](SVG.md) - SVG 矢量图形绘制(仅 H5)
32
+ - [WebGL.md](WebGL.md) - WebGL 3D 图形渲染(仅 H5)
33
+
34
+ ### 布局算法 (Layouts)
35
+
36
+ - [TreeLayout.md](TreeLayout.md) - 树状布局,支持 TB/LR/RL/BT 方向
37
+ - [PieLayout.md](PieLayout.md) - 饼图/环形图布局
38
+ - [BarLayout.md](BarLayout.md) - 柱状图/条形图布局
39
+
40
+ ### 坐标投影 (Projections)
41
+
42
+ - [Projections.md](Projections.md) - Mercator 墨卡托投影、Eoap 等角斜方位投影、MapCoordinate 地图坐标系
43
+
44
+ ### 变换与插值
45
+
46
+ - [Matrix.md](Matrix.md) - 4x4 矩阵变换(平移/旋转/缩放)
47
+ - [Interpolation.md](Interpolation.md) - Cardinal/Hermite 三次插值函数
48
+
49
+ ### 工具函数
50
+
51
+ - [Utilities.md](Utilities.md) - ruler 刻度尺、animation 动画、getLoopColors 循环颜色、throttle 节流、initOption/mergeOption 配置处理
52
+
53
+ ## 画笔平台支持说明
54
+
55
+ | 画笔 | H5 | 微信小程序 | 支付宝小程序 | uni-app |
56
+ |------|-----|-----------|-------------|----------|
57
+ | Canvas | ✅ `new Canvas(el)` | ✅ 组件方式 | ✅ 组件方式 | ✅ 组件方式 |
58
+ | SVG | ✅ `new SVG(el)` | ❌ | ❌ | ❌ |
59
+ | WebGL | ✅ `getWebGLContext()` | ❌ | ❌ | ❌ |
60
+ | RawCanvas | ✅ | ✅ | ✅ | ✅ |
61
+
62
+ **注意**: SVG 和 WebGL 仅支持 H5 端。Canvas 在不同平台的 API 完全一致,但初始化方式不同:
63
+ - **H5**: `new Canvas(domElement)`
64
+ - **小程序**: 通过 ui-canvas 组件的 `fetch()` 方法获取实例
65
+
66
+ ## 快速使用
67
+
68
+ ### H5 端使用 Canvas
69
+
70
+ ```js
71
+ import { Canvas } from 'vislite';
72
+
73
+ var painter = new Canvas(document.getElementById('root'));
74
+
75
+ painter.config({
76
+ fillStyle: "red"
77
+ }).fillCircle(200, 150, 100);
78
+
79
+ // 设置区域用于交互
80
+ painter.setRegion('circle');
81
+ painter.bind('click', (regionName, x, y) => {
82
+ console.log(regionName, x, y);
83
+ });
84
+ ```
85
+
86
+ ### 小程序端使用 Canvas
87
+
88
+ 详见各小程序平台的文档:
89
+ - [微信小程序 Canvas](miniprogram/ui-canvas.md)
90
+ - [支付宝小程序 Canvas](minialipay/ui-canvas.md)
91
+ - [uni-app Canvas](uniapp/ui-canvas.md)
92
+
93
+ ### 树布局
94
+
95
+ ```js
96
+ import { Canvas, TreeLayout } from 'vislite';
97
+
98
+ var treeLayout = new TreeLayout();
99
+ treeLayout.setOption({
100
+ type: "rect",
101
+ direction: "TB",
102
+ x: 250,
103
+ y: 20,
104
+ width: 500,
105
+ height: 260
106
+ });
107
+
108
+ var tree = treeLayout.use(data);
109
+
110
+ // 绘制连线
111
+ for (var key in tree.node) {
112
+ var pid = tree.node[key].pid;
113
+ if (pid) {
114
+ painter.beginPath()
115
+ .moveTo(tree.node[key].left, tree.node[key].top)
116
+ .bezierCurveTo(...)
117
+ .stroke();
118
+ }
119
+ }
120
+
121
+ // 绘制节点
122
+ painter.fullCircle(tree.node[key].left, tree.node[key].top, 10);
123
+ ```
124
+
125
+ ## 核心导出
126
+
127
+ ```js
128
+ import {
129
+ // 画笔
130
+ Canvas, // 跨平台(初始化方式不同)
131
+ SVG, // 仅 H5
132
+ RawCanvas, // 跨平台
133
+
134
+ // 布局
135
+ TreeLayout,
136
+ PieLayout,
137
+ BarLayout,
138
+
139
+ // 投影
140
+ Mercator,
141
+ Eoap,
142
+ MapCoordinate,
143
+
144
+ // 变换
145
+ Matrix4,
146
+ rotate,
147
+ move,
148
+ scale,
149
+
150
+ // 插值
151
+ Cardinal,
152
+ Hermite,
153
+
154
+ // 工具
155
+ ruler,
156
+ animation,
157
+ getLoopColors,
158
+ throttle,
159
+ assemble,
160
+
161
+ // WebGL(仅 H5)
162
+ getWebGLContext,
163
+ Shader,
164
+ Texture,
165
+ Buffer,
166
+
167
+ // 配置项
168
+ initOption,
169
+ mergeOption
170
+ } from 'vislite';
171
+ ```
172
+
173
+ ## 典型场景
174
+
175
+ - 创建跨平台图表(柱状图、饼图、树图)
176
+ - 地图可视化(墨卡托/等角斜方位投影)
177
+ - 画布/SVG/WebGL 图形绑制
178
+ - 数据可视化算法应用
179
+ - 矩阵变换与插值计算
180
180
  - 小程序/uni-app 多端开发
@@ -1,138 +1,138 @@
1
- # SVG 画笔 API
2
-
3
- SVG 画笔用于绘制矢量图形,支持导出为图片。**仅支持 H5 端**。
4
-
5
- ## 初始化
6
-
7
- ```js
8
- import { SVG } from 'vislite';
9
-
10
- var painter = new SVG(document.getElementById('root'));
11
- ```
12
-
13
- ## 配置项 (config)
14
-
15
- ```js
16
- painter.config({
17
- fillStyle: 'red', // 填充色
18
- strokeStyle: 'black', // 轮廓色
19
- lineWidth: 1, // 线宽
20
- lineCap: 'butt', // 线端点类型
21
- lineJoin: 'miter', // 线拐角类型
22
- lineDash: [], // 虚线样式
23
- textAlign: 'left', // 文字水平对齐
24
- textBaseline: 'middle', // 文字垂直对齐
25
- fontSize: 16, // 字体大小
26
- fontFamily: 'sans-serif', // 字体
27
- opacity: 1 // 透明度
28
- });
29
- ```
30
-
31
- ## 节点操作
32
-
33
- ```js
34
- // 标记当前应用节点
35
- painter.useEl(el);
36
-
37
- // 获取当前应用节点
38
- painter.getEl();
39
-
40
- // 追加节点(el可以是元素或字符串如'text')
41
- painter.appendEl(el, context);
42
-
43
- // 追加绘制板(自动创建对应类型的SVG元素)
44
- painter.appendBoard('text'); // 文字
45
- painter.appendBoard('circle'); // 圆形
46
- painter.appendBoard('path'); // 路径
47
- painter.appendBoard('arc'); // 弧形
48
- painter.appendBoard('rect'); // 矩形
49
-
50
- // 删除当前节点
51
- painter.remove();
52
-
53
- // 设置/获取节点属性
54
- painter.attr({ x: 10, y: 20 });
55
- var x = painter.attr('x');
56
- ```
57
-
58
- ## 文字绘制
59
-
60
- ```js
61
- painter.fillText(text, x, y, deg); // 填充文字
62
- painter.strokeText(text, x, y, deg); // 轮廓文字
63
- painter.fullText(text, x, y, deg); // 填充+轮廓文字
64
- ```
65
-
66
- ## 路径操作
67
-
68
- ```js
69
- painter.beginPath();
70
- painter.closePath();
71
- painter.moveTo(x, y);
72
- painter.lineTo(x, y);
73
- painter.arc(x, y, r, beginDeg, deg);
74
- painter.quadraticCurveTo(cpx, cpy, x, y);
75
- painter.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);
76
- painter.stroke();
77
- painter.fill();
78
- painter.full();
79
- ```
80
-
81
- ## 图形绘制
82
-
83
- ```js
84
- // 弧形
85
- painter.fillArc(cx, cy, r1, r2, beginDeg, deg);
86
- painter.strokeArc(cx, cy, r1, r2, beginDeg, deg);
87
- painter.fullArc(cx, cy, r1, r2, beginDeg, deg);
88
-
89
- // 圆形
90
- painter.fillCircle(cx, cy, r);
91
- painter.strokeCircle(cx, cy, r);
92
- painter.fullCircle(cx, cy, r);
93
-
94
- // 矩形
95
- painter.fillRect(x, y, w, h);
96
- painter.strokeRect(x, y, w, h);
97
- painter.fullRect(x, y, w, h);
98
- ```
99
-
100
- ## 渐变色
101
-
102
- ```js
103
- // 线性渐变
104
- painter.createLinearGradient(x1, y1, x2, y2);
105
-
106
- // 环形渐变
107
- painter.createRadialGradient(cx, cy, r);
108
-
109
- // 使用方式同 Canvas
110
- ```
111
-
112
- ## 变换
113
-
114
- ```js
115
- // 平移
116
- painter.translate(x, y);
117
-
118
- // 旋转(deg为角度值)
119
- painter.rotate(deg);
120
-
121
- // 缩放
122
- painter.scale(x, y);
123
- ```
124
-
125
- ## 导出
126
-
127
- ```js
128
- // 导出为图片
129
- painter.toDataURL().then(dataUrl => {
130
- // dataUrl 即为 base64 图片
131
- });
132
- ```
133
-
134
- ## 重置
135
-
136
- ```js
137
- painter.reset(config);
1
+ # SVG 画笔 API
2
+
3
+ SVG 画笔用于绘制矢量图形,支持导出为图片。**仅支持 H5 端**。
4
+
5
+ ## 初始化
6
+
7
+ ```js
8
+ import { SVG } from 'vislite';
9
+
10
+ var painter = new SVG(document.getElementById('root'));
11
+ ```
12
+
13
+ ## 配置项 (config)
14
+
15
+ ```js
16
+ painter.config({
17
+ fillStyle: 'red', // 填充色
18
+ strokeStyle: 'black', // 轮廓色
19
+ lineWidth: 1, // 线宽
20
+ lineCap: 'butt', // 线端点类型
21
+ lineJoin: 'miter', // 线拐角类型
22
+ lineDash: [], // 虚线样式
23
+ textAlign: 'left', // 文字水平对齐
24
+ textBaseline: 'middle', // 文字垂直对齐
25
+ fontSize: 16, // 字体大小
26
+ fontFamily: 'sans-serif', // 字体
27
+ opacity: 1 // 透明度
28
+ });
29
+ ```
30
+
31
+ ## 节点操作
32
+
33
+ ```js
34
+ // 标记当前应用节点
35
+ painter.useEl(el);
36
+
37
+ // 获取当前应用节点
38
+ painter.getEl();
39
+
40
+ // 追加节点(el可以是元素或字符串如'text')
41
+ painter.appendEl(el, context);
42
+
43
+ // 追加绘制板(自动创建对应类型的SVG元素)
44
+ painter.appendBoard('text'); // 文字
45
+ painter.appendBoard('circle'); // 圆形
46
+ painter.appendBoard('path'); // 路径
47
+ painter.appendBoard('arc'); // 弧形
48
+ painter.appendBoard('rect'); // 矩形
49
+
50
+ // 删除当前节点
51
+ painter.remove();
52
+
53
+ // 设置/获取节点属性
54
+ painter.attr({ x: 10, y: 20 });
55
+ var x = painter.attr('x');
56
+ ```
57
+
58
+ ## 文字绘制
59
+
60
+ ```js
61
+ painter.fillText(text, x, y, deg); // 填充文字
62
+ painter.strokeText(text, x, y, deg); // 轮廓文字
63
+ painter.fullText(text, x, y, deg); // 填充+轮廓文字
64
+ ```
65
+
66
+ ## 路径操作
67
+
68
+ ```js
69
+ painter.beginPath();
70
+ painter.closePath();
71
+ painter.moveTo(x, y);
72
+ painter.lineTo(x, y);
73
+ painter.arc(x, y, r, beginDeg, deg);
74
+ painter.quadraticCurveTo(cpx, cpy, x, y);
75
+ painter.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);
76
+ painter.stroke();
77
+ painter.fill();
78
+ painter.full();
79
+ ```
80
+
81
+ ## 图形绘制
82
+
83
+ ```js
84
+ // 弧形
85
+ painter.fillArc(cx, cy, r1, r2, beginDeg, deg);
86
+ painter.strokeArc(cx, cy, r1, r2, beginDeg, deg);
87
+ painter.fullArc(cx, cy, r1, r2, beginDeg, deg);
88
+
89
+ // 圆形
90
+ painter.fillCircle(cx, cy, r);
91
+ painter.strokeCircle(cx, cy, r);
92
+ painter.fullCircle(cx, cy, r);
93
+
94
+ // 矩形
95
+ painter.fillRect(x, y, w, h);
96
+ painter.strokeRect(x, y, w, h);
97
+ painter.fullRect(x, y, w, h);
98
+ ```
99
+
100
+ ## 渐变色
101
+
102
+ ```js
103
+ // 线性渐变
104
+ painter.createLinearGradient(x1, y1, x2, y2);
105
+
106
+ // 环形渐变
107
+ painter.createRadialGradient(cx, cy, r);
108
+
109
+ // 使用方式同 Canvas
110
+ ```
111
+
112
+ ## 变换
113
+
114
+ ```js
115
+ // 平移
116
+ painter.translate(x, y);
117
+
118
+ // 旋转(deg为角度值)
119
+ painter.rotate(deg);
120
+
121
+ // 缩放
122
+ painter.scale(x, y);
123
+ ```
124
+
125
+ ## 导出
126
+
127
+ ```js
128
+ // 导出为图片
129
+ painter.toDataURL().then(dataUrl => {
130
+ // dataUrl 即为 base64 图片
131
+ });
132
+ ```
133
+
134
+ ## 重置
135
+
136
+ ```js
137
+ painter.reset(config);
138
138
  ```