vislite 1.12.0 → 2.0.0-next.0

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 (180) hide show
  1. package/AUTHORS.txt +6 -6
  2. package/CHANGELOG +414 -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 +21 -17
  8. package/bin/minialipay.js +27 -0
  9. package/bin/run +25 -21
  10. package/bin/skills.js +26 -26
  11. package/lib/BarLayout/index.es.js +348 -348
  12. package/lib/Buffer/index.es.js +34 -34
  13. package/lib/Canvas/index.es.js +804 -804
  14. package/lib/Cardinal/index.es.js +89 -89
  15. package/lib/Eoap/index.es.js +32 -32
  16. package/lib/Hermite/index.es.js +34 -34
  17. package/lib/MapCoordinate/index.es.js +199 -199
  18. package/lib/Matrix4/index.es.js +123 -123
  19. package/lib/Mercator/index.es.js +18 -18
  20. package/lib/PieLayout/index.es.js +115 -115
  21. package/lib/RawCanvas/index.es.js +736 -736
  22. package/lib/SVG/index.es.js +626 -626
  23. package/lib/Shader/index.es.js +34 -34
  24. package/lib/Texture/index.es.js +52 -52
  25. package/lib/TreeLayout/index.es.js +301 -301
  26. package/lib/animation/index.es.js +2 -2
  27. package/lib/assemble/index.es.js +19 -19
  28. package/lib/getLoopColors/index.es.js +34 -34
  29. package/lib/getWebGLContext/index.es.js +61 -61
  30. package/lib/index.umd.js +2797 -2797
  31. package/lib/index.umd.min.js +1 -1
  32. package/lib/initOption/index.es.js +5 -5
  33. package/lib/mergeOption/index.es.js +34 -34
  34. package/lib/move/index.es.js +6 -6
  35. package/lib/rotate/index.es.js +6 -6
  36. package/lib/ruler/index.es.js +136 -136
  37. package/lib/scale/index.es.js +5 -5
  38. package/minialipay/ui-canvas/drawImage.js +35 -35
  39. package/minialipay/ui-canvas/index.acss +4 -4
  40. package/minialipay/ui-canvas/index.axml +3 -3
  41. package/minialipay/ui-canvas/index.d.ts +1 -1
  42. package/minialipay/ui-canvas/index.js +100 -100
  43. package/minialipay/ui-canvas/index.json +6 -6
  44. package/miniprogram/ui-canvas/drawImage.js +35 -35
  45. package/miniprogram/ui-canvas/index.js +125 -125
  46. package/miniprogram/ui-canvas/index.json +4 -4
  47. package/miniprogram/ui-canvas/index.wxml +4 -4
  48. package/miniprogram/ui-canvas/index.wxss +5 -5
  49. package/package/BarLayout/index.ts +2 -2
  50. package/package/Buffer/index.ts +2 -2
  51. package/package/Canvas/index.ts +2 -2
  52. package/package/Cardinal/index.ts +2 -2
  53. package/package/Eoap/index.ts +2 -2
  54. package/package/Hermite/index.ts +2 -2
  55. package/package/MapCoordinate/index.ts +2 -2
  56. package/package/Matrix4/index.ts +2 -2
  57. package/package/Mercator/index.ts +2 -2
  58. package/package/PieLayout/index.ts +2 -2
  59. package/package/RawCanvas/index.ts +2 -2
  60. package/package/SVG/index.ts +2 -2
  61. package/package/Shader/index.ts +2 -2
  62. package/package/Texture/index.ts +2 -2
  63. package/package/TreeLayout/index.ts +2 -2
  64. package/package/animation/index.ts +5 -5
  65. package/package/assemble/index.ts +2 -2
  66. package/package/getLoopColors/index.ts +2 -2
  67. package/package/getWebGLContext/index.ts +40 -40
  68. package/package/index.ts +84 -84
  69. package/package/initOption/index.ts +2 -2
  70. package/package/mergeOption/index.ts +2 -2
  71. package/package/move/index.ts +2 -2
  72. package/package/rotate/index.ts +2 -2
  73. package/package/ruler/index.ts +2 -2
  74. package/package/scale/index.ts +2 -2
  75. package/package/throttle/index.ts +2 -2
  76. package/package.json +103 -79
  77. package/skills/vislite-lib/BarLayout.md +117 -117
  78. package/skills/vislite-lib/Canvas.md +183 -183
  79. package/skills/vislite-lib/Interpolation.md +129 -129
  80. package/skills/vislite-lib/Matrix.md +174 -174
  81. package/skills/vislite-lib/PieLayout.md +131 -131
  82. package/skills/vislite-lib/Projections.md +158 -158
  83. package/skills/vislite-lib/SKILL.md +179 -179
  84. package/skills/vislite-lib/SVG.md +137 -137
  85. package/skills/vislite-lib/TreeLayout.md +176 -176
  86. package/skills/vislite-lib/Utilities.md +261 -261
  87. package/skills/vislite-lib/WebGL.md +106 -106
  88. package/skills/vislite-lib/minialipay/ui-canvas.md +95 -95
  89. package/skills/vislite-lib/miniprogram/ui-canvas.md +98 -98
  90. package/skills/vislite-lib/uniapp/ui-canvas.md +113 -113
  91. package/src/Canvas.ts +89 -89
  92. package/src/Eoap.ts +66 -66
  93. package/src/Matrix4/index.ts +84 -84
  94. package/src/Matrix4/move.ts +12 -12
  95. package/src/Matrix4/rotate.ts +15 -15
  96. package/src/Matrix4/scale.ts +11 -11
  97. package/src/Matrix4/transform.ts +64 -64
  98. package/src/Mercator.ts +27 -27
  99. package/src/SVG.ts +86 -86
  100. package/src/common/assemble.ts +30 -30
  101. package/src/common/canvas/arc.ts +51 -51
  102. package/src/common/canvas/config.ts +176 -176
  103. package/src/common/canvas/default.ts +64 -64
  104. package/src/common/canvas/gradient.ts +31 -31
  105. package/src/common/canvas/index.ts +189 -189
  106. package/src/common/canvas/painter.ts +475 -475
  107. package/src/common/canvas/texts.ts +18 -18
  108. package/src/common/map/getBoundary.ts +15 -15
  109. package/src/common/map/tool.ts +29 -29
  110. package/src/common/option.ts +31 -31
  111. package/src/common/setStyle.ts +5 -5
  112. package/src/common/svg/config.ts +213 -213
  113. package/src/common/svg/default.ts +29 -29
  114. package/src/common/svg/gradient.ts +53 -53
  115. package/src/common/svg/index.ts +420 -420
  116. package/src/common/svg/tool.ts +51 -51
  117. package/src/common/tree/index.ts +25 -25
  118. package/src/common/tree/toInnerTree.ts +61 -61
  119. package/src/common/tree/toPlainTree.ts +135 -135
  120. package/src/common/type.ts +26 -26
  121. package/src/common/webgl/buffer.ts +79 -79
  122. package/src/common/webgl/getWebGLContext.ts +45 -45
  123. package/src/common/webgl/shader.ts +75 -75
  124. package/src/common/webgl/texture.ts +98 -98
  125. package/src/coordinate/MapCoordinate.ts +80 -80
  126. package/src/getLoopColors.ts +42 -42
  127. package/src/interpolation/Cardinal.ts +110 -110
  128. package/src/interpolation/Hermite.ts +65 -65
  129. package/src/layout/BarLayout.ts +249 -249
  130. package/src/layout/PieLayout.ts +146 -146
  131. package/src/layout/TreeLayout.ts +200 -200
  132. package/src/move.ts +7 -7
  133. package/src/rotate.ts +7 -7
  134. package/src/ruler.ts +209 -209
  135. package/src/scale.ts +6 -6
  136. package/types/Bar.d.ts +91 -91
  137. package/types/BarConfig.d.ts +4 -4
  138. package/types/BarLayout.d.ts +48 -48
  139. package/types/BarOption.d.ts +31 -31
  140. package/types/Buffer.d.ts +30 -30
  141. package/types/Canvas.d.ts +379 -379
  142. package/types/CanvasConfig.d.ts +61 -61
  143. package/types/CanvasOption.d.ts +13 -13
  144. package/types/CanvasOpts.d.ts +9 -9
  145. package/types/Cardinal.d.ts +20 -20
  146. package/types/Gradient.d.ts +20 -20
  147. package/types/Hermite.d.ts +25 -25
  148. package/types/Map.d.ts +9 -9
  149. package/types/MapConfig.d.ts +27 -27
  150. package/types/MapCoordinate.d.ts +22 -22
  151. package/types/Matrix4.d.ts +79 -79
  152. package/types/Pie.d.ts +73 -73
  153. package/types/PieConfig.d.ts +26 -26
  154. package/types/PieLayout.d.ts +40 -40
  155. package/types/PieOption.d.ts +21 -21
  156. package/types/SVG.d.ts +282 -282
  157. package/types/SVGConfig.d.ts +54 -54
  158. package/types/Shader.d.ts +22 -22
  159. package/types/Texture.d.ts +22 -22
  160. package/types/Tree.d.ts +74 -74
  161. package/types/TreeConfig.d.ts +52 -52
  162. package/types/TreeLayout.d.ts +71 -71
  163. package/types/TreeOption.d.ts +48 -48
  164. package/types/animation.d.ts +26 -26
  165. package/types/assemble.d.ts +14 -14
  166. package/types/getLoopColors.d.ts +13 -13
  167. package/types/getWebGLContext.d.ts +7 -7
  168. package/types/index.d.ts +220 -220
  169. package/types/module.d.ts +110 -110
  170. package/types/move.d.ts +15 -15
  171. package/types/option.d.ts +12 -12
  172. package/types/painterConfig.d.ts +14 -14
  173. package/types/rotate.d.ts +15 -15
  174. package/types/ruler.d.ts +24 -24
  175. package/types/scale.d.ts +15 -15
  176. package/types/throttle.d.ts +6 -6
  177. package/types/ui-canvas.d.ts +4 -4
  178. package/types/uni-canvas.d.ts +3 -3
  179. package/uni-app/drawImage.js +19 -19
  180. 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
  ```