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