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,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处理 | 需手动处理 | 组件自动处理 |