vislite 1.12.0-alpha.0 → 1.12.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 (183) hide show
  1. package/AUTHORS.txt +6 -6
  2. package/CHANGELOG +402 -394
  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 -800
  13. package/lib/Canvas/index.es.min.js +1 -1
  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 -732
  22. package/lib/RawCanvas/index.es.min.js +1 -1
  23. package/lib/SVG/index.es.js +626 -631
  24. package/lib/SVG/index.es.min.js +1 -1
  25. package/lib/Shader/index.es.js +34 -34
  26. package/lib/Texture/index.es.js +52 -52
  27. package/lib/TreeLayout/index.es.js +301 -315
  28. package/lib/animation/index.es.js +2 -2
  29. package/lib/assemble/index.es.js +19 -16
  30. package/lib/assemble/index.es.min.js +1 -1
  31. package/lib/getLoopColors/index.es.js +34 -34
  32. package/lib/getWebGLContext/index.es.js +61 -61
  33. package/lib/index.umd.js +2797 -2784
  34. package/lib/index.umd.min.js +2 -2
  35. package/lib/initOption/index.es.js +5 -5
  36. package/lib/mergeOption/index.es.js +34 -34
  37. package/lib/move/index.es.js +6 -6
  38. package/lib/rotate/index.es.js +6 -6
  39. package/lib/ruler/index.es.js +136 -136
  40. package/lib/scale/index.es.js +5 -5
  41. package/minialipay/ui-canvas/drawImage.js +35 -35
  42. package/minialipay/ui-canvas/index.acss +4 -4
  43. package/minialipay/ui-canvas/index.axml +3 -3
  44. package/minialipay/ui-canvas/index.d.ts +1 -1
  45. package/minialipay/ui-canvas/index.js +100 -100
  46. package/minialipay/ui-canvas/index.json +6 -6
  47. package/miniprogram/ui-canvas/drawImage.js +35 -35
  48. package/miniprogram/ui-canvas/index.js +125 -125
  49. package/miniprogram/ui-canvas/index.json +4 -4
  50. package/miniprogram/ui-canvas/index.wxml +4 -4
  51. package/miniprogram/ui-canvas/index.wxss +5 -5
  52. package/package/BarLayout/index.ts +2 -2
  53. package/package/Buffer/index.ts +2 -2
  54. package/package/Canvas/index.ts +2 -2
  55. package/package/Cardinal/index.ts +2 -2
  56. package/package/Eoap/index.ts +2 -2
  57. package/package/Hermite/index.ts +2 -2
  58. package/package/MapCoordinate/index.ts +2 -2
  59. package/package/Matrix4/index.ts +2 -2
  60. package/package/Mercator/index.ts +2 -2
  61. package/package/PieLayout/index.ts +2 -2
  62. package/package/RawCanvas/index.ts +2 -2
  63. package/package/SVG/index.ts +2 -2
  64. package/package/Shader/index.ts +2 -2
  65. package/package/Texture/index.ts +2 -2
  66. package/package/TreeLayout/index.ts +2 -2
  67. package/package/animation/index.ts +5 -5
  68. package/package/assemble/index.ts +2 -2
  69. package/package/getLoopColors/index.ts +2 -2
  70. package/package/getWebGLContext/index.ts +40 -40
  71. package/package/index.ts +84 -84
  72. package/package/initOption/index.ts +2 -2
  73. package/package/mergeOption/index.ts +2 -2
  74. package/package/move/index.ts +2 -2
  75. package/package/rotate/index.ts +2 -2
  76. package/package/ruler/index.ts +2 -2
  77. package/package/scale/index.ts +2 -2
  78. package/package/throttle/index.ts +2 -2
  79. package/package.json +79 -79
  80. package/skills/vislite-lib/BarLayout.md +117 -117
  81. package/skills/vislite-lib/Canvas.md +183 -183
  82. package/skills/vislite-lib/Interpolation.md +129 -129
  83. package/skills/vislite-lib/Matrix.md +174 -174
  84. package/skills/vislite-lib/PieLayout.md +131 -131
  85. package/skills/vislite-lib/Projections.md +158 -158
  86. package/skills/vislite-lib/SKILL.md +179 -179
  87. package/skills/vislite-lib/SVG.md +137 -137
  88. package/skills/vislite-lib/TreeLayout.md +176 -176
  89. package/skills/vislite-lib/Utilities.md +261 -261
  90. package/skills/vislite-lib/WebGL.md +106 -106
  91. package/skills/vislite-lib/minialipay/ui-canvas.md +95 -95
  92. package/skills/vislite-lib/miniprogram/ui-canvas.md +98 -98
  93. package/skills/vislite-lib/uniapp/ui-canvas.md +113 -113
  94. package/src/Canvas.ts +89 -89
  95. package/src/Eoap.ts +66 -66
  96. package/src/Matrix4/index.ts +84 -84
  97. package/src/Matrix4/move.ts +12 -12
  98. package/src/Matrix4/rotate.ts +15 -15
  99. package/src/Matrix4/scale.ts +11 -11
  100. package/src/Matrix4/transform.ts +64 -64
  101. package/src/Mercator.ts +27 -27
  102. package/src/SVG.ts +86 -69
  103. package/src/common/assemble.ts +30 -22
  104. package/src/common/canvas/arc.ts +51 -51
  105. package/src/common/canvas/config.ts +176 -176
  106. package/src/common/canvas/default.ts +64 -64
  107. package/src/common/canvas/gradient.ts +31 -31
  108. package/src/common/canvas/index.ts +189 -189
  109. package/src/common/canvas/painter.ts +475 -454
  110. package/src/common/canvas/texts.ts +18 -18
  111. package/src/common/map/getBoundary.ts +15 -15
  112. package/src/common/map/tool.ts +29 -29
  113. package/src/common/option.ts +31 -31
  114. package/src/common/setStyle.ts +5 -5
  115. package/src/common/svg/config.ts +213 -213
  116. package/src/common/svg/default.ts +29 -29
  117. package/src/common/svg/gradient.ts +53 -53
  118. package/src/common/svg/index.ts +420 -420
  119. package/src/common/svg/tool.ts +51 -51
  120. package/src/common/tree/index.ts +25 -25
  121. package/src/common/tree/toInnerTree.ts +61 -61
  122. package/src/common/tree/toPlainTree.ts +135 -135
  123. package/src/common/type.ts +26 -26
  124. package/src/common/webgl/buffer.ts +79 -79
  125. package/src/common/webgl/getWebGLContext.ts +45 -45
  126. package/src/common/webgl/shader.ts +75 -75
  127. package/src/common/webgl/texture.ts +98 -98
  128. package/src/coordinate/MapCoordinate.ts +80 -80
  129. package/src/getLoopColors.ts +42 -42
  130. package/src/interpolation/Cardinal.ts +110 -110
  131. package/src/interpolation/Hermite.ts +65 -65
  132. package/src/layout/BarLayout.ts +249 -249
  133. package/src/layout/PieLayout.ts +146 -146
  134. package/src/layout/TreeLayout.ts +200 -200
  135. package/src/move.ts +7 -7
  136. package/src/rotate.ts +7 -7
  137. package/src/ruler.ts +209 -209
  138. package/src/scale.ts +6 -6
  139. package/types/Bar.d.ts +91 -91
  140. package/types/BarConfig.d.ts +4 -4
  141. package/types/BarLayout.d.ts +48 -48
  142. package/types/BarOption.d.ts +31 -31
  143. package/types/Buffer.d.ts +30 -30
  144. package/types/Canvas.d.ts +379 -379
  145. package/types/CanvasConfig.d.ts +61 -61
  146. package/types/CanvasOption.d.ts +13 -13
  147. package/types/CanvasOpts.d.ts +9 -9
  148. package/types/Cardinal.d.ts +20 -20
  149. package/types/Gradient.d.ts +20 -20
  150. package/types/Hermite.d.ts +25 -25
  151. package/types/Map.d.ts +9 -9
  152. package/types/MapConfig.d.ts +27 -27
  153. package/types/MapCoordinate.d.ts +22 -22
  154. package/types/Matrix4.d.ts +79 -79
  155. package/types/Pie.d.ts +73 -73
  156. package/types/PieConfig.d.ts +26 -26
  157. package/types/PieLayout.d.ts +40 -40
  158. package/types/PieOption.d.ts +21 -21
  159. package/types/SVG.d.ts +282 -282
  160. package/types/SVGConfig.d.ts +54 -54
  161. package/types/Shader.d.ts +22 -22
  162. package/types/Texture.d.ts +22 -22
  163. package/types/Tree.d.ts +74 -74
  164. package/types/TreeConfig.d.ts +52 -52
  165. package/types/TreeLayout.d.ts +71 -71
  166. package/types/TreeOption.d.ts +48 -48
  167. package/types/animation.d.ts +26 -26
  168. package/types/assemble.d.ts +14 -14
  169. package/types/getLoopColors.d.ts +13 -13
  170. package/types/getWebGLContext.d.ts +7 -7
  171. package/types/index.d.ts +220 -221
  172. package/types/module.d.ts +110 -110
  173. package/types/move.d.ts +15 -15
  174. package/types/option.d.ts +12 -12
  175. package/types/painterConfig.d.ts +14 -14
  176. package/types/rotate.d.ts +15 -15
  177. package/types/ruler.d.ts +24 -24
  178. package/types/scale.d.ts +15 -15
  179. package/types/throttle.d.ts +6 -6
  180. package/types/ui-canvas.d.ts +4 -4
  181. package/types/uni-canvas.d.ts +3 -3
  182. package/uni-app/drawImage.js +19 -19
  183. package/uni-app/ui-canvas.vue +295 -295
@@ -1,107 +1,107 @@
1
- # WebGL API
2
-
3
- WebGL 相关模块,用于 3D 图形渲染。**仅支持 H5 端**。
4
-
5
- ## 获取 WebGL 上下文
6
-
7
- ```js
8
- import { getWebGLContext } from 'vislite';
9
-
10
- var canvas = document.getElementById('canvas');
11
- var gl = getWebGLContext(canvas, scale, {
12
- preserveDrawingBuffer: true
13
- }, 'scaleToFill');
14
- ```
15
-
16
- ### 参数说明
17
-
18
- - **canvas**: HTMLCanvasElement
19
- - **scale**: 缩放比例,默认1
20
- - **opts**: 配置项
21
- - `preserveDrawingBuffer`: 是否保留绘制缓冲区
22
- - **mode**: 缩放模式
23
- - `scaleToFill`: 拉伸填充
24
- - `aspectFit`: 适应(保持比例)
25
- - `aspectFill`: 覆盖(保持比例)
26
-
27
- ### 返回值
28
-
29
- 返回 `WebGL2RenderingContext` 对象。
30
-
31
- ## Shader (着色器)
32
-
33
- ```js
34
- import { Shader } from 'vislite';
35
-
36
- var shader = new Shader(gl, {
37
- vertexShader: '...', // 顶点着色器源码
38
- fragmentShader: '...' // 片元着色器源码
39
- });
40
-
41
- shader.use();
42
- ```
43
-
44
- ### 方法
45
-
46
- - `use()`: 使用该着色器程序
47
- - `setAttribute(name, data)`: 设置顶点属性
48
- - `setUniform(name, type, value)`: 设置 uniform 变量
49
-
50
- ## Buffer (缓冲区)
51
-
52
- ```js
53
- import { Buffer } from 'vislite';
54
-
55
- var buffer = new Buffer(gl);
56
- buffer.setAttribute('position', data);
57
- buffer.bind();
58
- ```
59
-
60
- ## Texture (纹理)
61
-
62
- ```js
63
- import { Texture } from 'vislite';
64
-
65
- var texture = new Texture(gl);
66
- texture.bind();
67
- texture.setImage(image);
68
- texture.setParameter(params);
69
- ```
70
-
71
- ## 使用示例
72
-
73
- ```js
74
- import { getWebGLContext, Shader, Buffer, Texture } from 'vislite';
75
-
76
- var gl = getWebGLContext(canvas, 1);
77
-
78
- // 创建着色器
79
- var shader = new Shader(gl, {
80
- vertexShader: `
81
- attribute vec4 position;
82
- void main() {
83
- gl_Position = position;
84
- }
85
- `,
86
- fragmentShader: `
87
- precision mediump float;
88
- void main() {
89
- gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
90
- }
91
- `
92
- });
93
-
94
- shader.use();
95
-
96
- // 创建缓冲区
97
- var buffer = new Buffer(gl);
98
- buffer.setAttribute('position', new Float32Array([
99
- 0, 0.5, 0,
100
- -0.5, -0.5, 0,
101
- 0.5, -0.5, 0
102
- ]));
103
- buffer.bind();
104
-
105
- // 绘制
106
- gl.drawArrays(gl.TRIANGLES, 0, 3);
1
+ # WebGL API
2
+
3
+ WebGL 相关模块,用于 3D 图形渲染。**仅支持 H5 端**。
4
+
5
+ ## 获取 WebGL 上下文
6
+
7
+ ```js
8
+ import { getWebGLContext } from 'vislite';
9
+
10
+ var canvas = document.getElementById('canvas');
11
+ var gl = getWebGLContext(canvas, scale, {
12
+ preserveDrawingBuffer: true
13
+ }, 'scaleToFill');
14
+ ```
15
+
16
+ ### 参数说明
17
+
18
+ - **canvas**: HTMLCanvasElement
19
+ - **scale**: 缩放比例,默认1
20
+ - **opts**: 配置项
21
+ - `preserveDrawingBuffer`: 是否保留绘制缓冲区
22
+ - **mode**: 缩放模式
23
+ - `scaleToFill`: 拉伸填充
24
+ - `aspectFit`: 适应(保持比例)
25
+ - `aspectFill`: 覆盖(保持比例)
26
+
27
+ ### 返回值
28
+
29
+ 返回 `WebGL2RenderingContext` 对象。
30
+
31
+ ## Shader (着色器)
32
+
33
+ ```js
34
+ import { Shader } from 'vislite';
35
+
36
+ var shader = new Shader(gl, {
37
+ vertexShader: '...', // 顶点着色器源码
38
+ fragmentShader: '...' // 片元着色器源码
39
+ });
40
+
41
+ shader.use();
42
+ ```
43
+
44
+ ### 方法
45
+
46
+ - `use()`: 使用该着色器程序
47
+ - `setAttribute(name, data)`: 设置顶点属性
48
+ - `setUniform(name, type, value)`: 设置 uniform 变量
49
+
50
+ ## Buffer (缓冲区)
51
+
52
+ ```js
53
+ import { Buffer } from 'vislite';
54
+
55
+ var buffer = new Buffer(gl);
56
+ buffer.setAttribute('position', data);
57
+ buffer.bind();
58
+ ```
59
+
60
+ ## Texture (纹理)
61
+
62
+ ```js
63
+ import { Texture } from 'vislite';
64
+
65
+ var texture = new Texture(gl);
66
+ texture.bind();
67
+ texture.setImage(image);
68
+ texture.setParameter(params);
69
+ ```
70
+
71
+ ## 使用示例
72
+
73
+ ```js
74
+ import { getWebGLContext, Shader, Buffer, Texture } from 'vislite';
75
+
76
+ var gl = getWebGLContext(canvas, 1);
77
+
78
+ // 创建着色器
79
+ var shader = new Shader(gl, {
80
+ vertexShader: `
81
+ attribute vec4 position;
82
+ void main() {
83
+ gl_Position = position;
84
+ }
85
+ `,
86
+ fragmentShader: `
87
+ precision mediump float;
88
+ void main() {
89
+ gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
90
+ }
91
+ `
92
+ });
93
+
94
+ shader.use();
95
+
96
+ // 创建缓冲区
97
+ var buffer = new Buffer(gl);
98
+ buffer.setAttribute('position', new Float32Array([
99
+ 0, 0.5, 0,
100
+ -0.5, -0.5, 0,
101
+ 0.5, -0.5, 0
102
+ ]));
103
+ buffer.bind();
104
+
105
+ // 绘制
106
+ gl.drawArrays(gl.TRIANGLES, 0, 3);
107
107
  ```
@@ -1,96 +1,96 @@
1
- # 支付宝小程序 Canvas
2
-
3
- 支付宝小程序使用自定义组件方式接入 VISLite Canvas。
4
-
5
- ## 安装
6
-
7
- 在支付宝小程序项目中引入 vislite:
8
-
9
- ```bash
10
- npm install vislite
11
- ```
12
-
13
- ## 使用方式
14
-
15
- ### 在小程序配置中引入
16
-
17
- ```json
18
- {
19
- "usingComponents": {
20
- "ui-canvas": "vislite/minialipay/ui-canvas/index"
21
- }
22
- }
23
- ```
24
-
25
- ### 在页面中使用
26
-
27
- ```xml
28
- <ui-canvas
29
- id="canvas"
30
- width="300"
31
- height="150"
32
- region="{{true}}"
33
- onDoTouchstart="onTouchstart"
34
- />
35
- ```
36
-
37
- ### 在 JS 中获取画笔
38
-
39
- ```js
40
- Page({
41
- onLoad() {
42
- this.selectComponent('#canvas').fetch().then(painter => {
43
- this.painter = painter;
44
-
45
- // 使用画笔
46
- this.painter.config({
47
- fillStyle: 'red'
48
- }).fillCircle(150, 75, 50);
49
- });
50
- },
51
-
52
- onTouchstart(e) {
53
- console.log('区域:', e.detail.name);
54
- console.log('坐标:', e.detail.x, e.detail.y);
55
- }
56
- });
57
- ```
58
-
59
- ## 组件属性
60
-
61
- | 属性 | 类型 | 默认值 | 说明 |
62
- |------|------|--------|------|
63
- | width | Number | 300 | 画布宽度 |
64
- | height | Number | 150 | 画布高度 |
65
- | region | Boolean | true | 是否启用区域检测 |
66
- | onDoTouchstart | Function | - | 点击事件回调 |
67
-
68
- ## 事件详情
69
-
70
- ### onDoTouchstart
71
-
72
- 当用户点击画布时触发,返回对象包含:
73
-
74
- ```js
75
- {
76
- name: '区域名称', // 通过 setRegion 设置的区域名
77
- x: 100, // 点击x坐标
78
- y: 50 // 点击y坐标
79
- }
80
- ```
81
-
82
- ## 注意事项
83
-
84
- 1. 支付宝小程序的 Canvas 上下文获取方式与 Web 不同
85
- 2. 需要使用 `my.createSelectorQuery()` 获取 canvas 节点
86
- 3. 区域检测功能依赖透明度拾取,可能影响性能
87
- 4. 导出图片使用 `toDataURL()` 方法会返回临时文件路径
88
-
89
- ## 与 Web 版的差异
90
-
91
- | 功能 | Web版 | 支付宝小程序版 |
92
- |------|-------|---------------|
93
- | 初始化 | `new Canvas(el)` | 组件 + `fetch()` |
94
- | 事件绑定 | `bind('click', cb)` | 组件 `onDoTouchstart` |
95
- | 导出 | `toDataURL()` base64 | `toDataURL()` 临时路径 |
1
+ # 支付宝小程序 Canvas
2
+
3
+ 支付宝小程序使用自定义组件方式接入 VISLite Canvas。
4
+
5
+ ## 安装
6
+
7
+ 在支付宝小程序项目中引入 vislite:
8
+
9
+ ```bash
10
+ npm install vislite
11
+ ```
12
+
13
+ ## 使用方式
14
+
15
+ ### 在小程序配置中引入
16
+
17
+ ```json
18
+ {
19
+ "usingComponents": {
20
+ "ui-canvas": "vislite/minialipay/ui-canvas/index"
21
+ }
22
+ }
23
+ ```
24
+
25
+ ### 在页面中使用
26
+
27
+ ```xml
28
+ <ui-canvas
29
+ id="canvas"
30
+ width="300"
31
+ height="150"
32
+ region="{{true}}"
33
+ onDoTouchstart="onTouchstart"
34
+ />
35
+ ```
36
+
37
+ ### 在 JS 中获取画笔
38
+
39
+ ```js
40
+ Page({
41
+ onLoad() {
42
+ this.selectComponent('#canvas').fetch().then(painter => {
43
+ this.painter = painter;
44
+
45
+ // 使用画笔
46
+ this.painter.config({
47
+ fillStyle: 'red'
48
+ }).fillCircle(150, 75, 50);
49
+ });
50
+ },
51
+
52
+ onTouchstart(e) {
53
+ console.log('区域:', e.detail.name);
54
+ console.log('坐标:', e.detail.x, e.detail.y);
55
+ }
56
+ });
57
+ ```
58
+
59
+ ## 组件属性
60
+
61
+ | 属性 | 类型 | 默认值 | 说明 |
62
+ |------|------|--------|------|
63
+ | width | Number | 300 | 画布宽度 |
64
+ | height | Number | 150 | 画布高度 |
65
+ | region | Boolean | true | 是否启用区域检测 |
66
+ | onDoTouchstart | Function | - | 点击事件回调 |
67
+
68
+ ## 事件详情
69
+
70
+ ### onDoTouchstart
71
+
72
+ 当用户点击画布时触发,返回对象包含:
73
+
74
+ ```js
75
+ {
76
+ name: '区域名称', // 通过 setRegion 设置的区域名
77
+ x: 100, // 点击x坐标
78
+ y: 50 // 点击y坐标
79
+ }
80
+ ```
81
+
82
+ ## 注意事项
83
+
84
+ 1. 支付宝小程序的 Canvas 上下文获取方式与 Web 不同
85
+ 2. 需要使用 `my.createSelectorQuery()` 获取 canvas 节点
86
+ 3. 区域检测功能依赖透明度拾取,可能影响性能
87
+ 4. 导出图片使用 `toDataURL()` 方法会返回临时文件路径
88
+
89
+ ## 与 Web 版的差异
90
+
91
+ | 功能 | Web版 | 支付宝小程序版 |
92
+ |------|-------|---------------|
93
+ | 初始化 | `new Canvas(el)` | 组件 + `fetch()` |
94
+ | 事件绑定 | `bind('click', cb)` | 组件 `onDoTouchstart` |
95
+ | 导出 | `toDataURL()` base64 | `toDataURL()` 临时路径 |
96
96
  | 区域检测 | 自动绑定 | 需要组件属性开启 |
@@ -1,99 +1,99 @@
1
- # 微信小程序 Canvas
2
-
3
- 微信小程序使用自定义组件方式接入 VISLite Canvas。
4
-
5
- ## 安装
6
-
7
- 在微信小程序项目中引入 vislite:
8
-
9
- ```bash
10
- npm install vislite
11
- ```
12
-
13
- ## 使用方式
14
-
15
- ### 在小程序配置中引入
16
-
17
- ```json
18
- {
19
- "usingComponents": {
20
- "ui-canvas": "vislite/miniprogram/ui-canvas/index"
21
- }
22
- }
23
- ```
24
-
25
- ### 在页面中使用
26
-
27
- ```xml
28
- <ui-canvas
29
- id="canvas"
30
- width="300"
31
- height="150"
32
- region="{{true}}"
33
- bind:dotouchstart="onTouchstart"
34
- />
35
- ```
36
-
37
- ### 在 JS 中获取画笔
38
-
39
- ```js
40
- Component({
41
- lifetimes: {
42
- ready() {
43
- this.selectComponent('#canvas').fetch().then(painter => {
44
- this.painter = painter;
45
-
46
- // 使用画笔
47
- this.painter.config({
48
- fillStyle: 'red'
49
- }).fillCircle(150, 75, 50);
50
- });
51
- }
52
- },
53
-
54
- methods: {
55
- onTouchstart(e) {
56
- console.log('区域:', e.detail.name);
57
- console.log('坐标:', e.detail.x, e.detail.y);
58
- }
59
- }
60
- });
61
- ```
62
-
63
- ## 组件属性
64
-
65
- | 属性 | 类型 | 默认值 | 说明 |
66
- |------|------|--------|------|
67
- | width | Number | 300 | 画布宽度 |
68
- | height | Number | 150 | 画布高度 |
69
- | region | Boolean | true | 是否启用区域检测 |
70
-
71
- ## 事件
72
-
73
- ### dotouchstart
74
-
75
- 当用户点击画布时触发,返回对象包含:
76
-
77
- ```js
78
- {
79
- name: '区域名称', // 通过 setRegion 设置的区域名
80
- x: 100, // 点击x坐标
81
- y: 50 // 点击y坐标
82
- }
83
- ```
84
-
85
- ## 注意事项
86
-
87
- 1. 微信小程序使用 `wx.createSelectorQuery()` 获取 canvas 节点
88
- 2. 需要处理高清屏的 dpr(设备像素比)缩放
89
- 3. 导出图片需要使用 `wx.canvasToTempFilePath` 转换
90
- 4. 区域检测依赖 `getImageData`,可能存在性能问题
91
-
92
- ## 与 Web 版的差异
93
-
94
- | 功能 | Web版 | 微信小程序版 |
95
- |------|-------|------------|
96
- | 初始化 | `new Canvas(el)` | 组件 + `fetch()` |
97
- | 事件绑定 | `bind('click', cb)` | 组件 `bind:dotouchstart` |
98
- | 导出 | `toDataURL()` base64 | `toDataURL()` 需转换 |
1
+ # 微信小程序 Canvas
2
+
3
+ 微信小程序使用自定义组件方式接入 VISLite Canvas。
4
+
5
+ ## 安装
6
+
7
+ 在微信小程序项目中引入 vislite:
8
+
9
+ ```bash
10
+ npm install vislite
11
+ ```
12
+
13
+ ## 使用方式
14
+
15
+ ### 在小程序配置中引入
16
+
17
+ ```json
18
+ {
19
+ "usingComponents": {
20
+ "ui-canvas": "vislite/miniprogram/ui-canvas/index"
21
+ }
22
+ }
23
+ ```
24
+
25
+ ### 在页面中使用
26
+
27
+ ```xml
28
+ <ui-canvas
29
+ id="canvas"
30
+ width="300"
31
+ height="150"
32
+ region="{{true}}"
33
+ bind:dotouchstart="onTouchstart"
34
+ />
35
+ ```
36
+
37
+ ### 在 JS 中获取画笔
38
+
39
+ ```js
40
+ Component({
41
+ lifetimes: {
42
+ ready() {
43
+ this.selectComponent('#canvas').fetch().then(painter => {
44
+ this.painter = painter;
45
+
46
+ // 使用画笔
47
+ this.painter.config({
48
+ fillStyle: 'red'
49
+ }).fillCircle(150, 75, 50);
50
+ });
51
+ }
52
+ },
53
+
54
+ methods: {
55
+ onTouchstart(e) {
56
+ console.log('区域:', e.detail.name);
57
+ console.log('坐标:', e.detail.x, e.detail.y);
58
+ }
59
+ }
60
+ });
61
+ ```
62
+
63
+ ## 组件属性
64
+
65
+ | 属性 | 类型 | 默认值 | 说明 |
66
+ |------|------|--------|------|
67
+ | width | Number | 300 | 画布宽度 |
68
+ | height | Number | 150 | 画布高度 |
69
+ | region | Boolean | true | 是否启用区域检测 |
70
+
71
+ ## 事件
72
+
73
+ ### dotouchstart
74
+
75
+ 当用户点击画布时触发,返回对象包含:
76
+
77
+ ```js
78
+ {
79
+ name: '区域名称', // 通过 setRegion 设置的区域名
80
+ x: 100, // 点击x坐标
81
+ y: 50 // 点击y坐标
82
+ }
83
+ ```
84
+
85
+ ## 注意事项
86
+
87
+ 1. 微信小程序使用 `wx.createSelectorQuery()` 获取 canvas 节点
88
+ 2. 需要处理高清屏的 dpr(设备像素比)缩放
89
+ 3. 导出图片需要使用 `wx.canvasToTempFilePath` 转换
90
+ 4. 区域检测依赖 `getImageData`,可能存在性能问题
91
+
92
+ ## 与 Web 版的差异
93
+
94
+ | 功能 | Web版 | 微信小程序版 |
95
+ |------|-------|------------|
96
+ | 初始化 | `new Canvas(el)` | 组件 + `fetch()` |
97
+ | 事件绑定 | `bind('click', cb)` | 组件 `bind:dotouchstart` |
98
+ | 导出 | `toDataURL()` base64 | `toDataURL()` 需转换 |
99
99
  | dpr处理 | 需手动处理 | 组件自动处理 |