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.
- package/AUTHORS.txt +6 -6
- package/CHANGELOG +402 -394
- package/LICENSE +20 -20
- package/README-en.md +245 -245
- package/README.md +245 -245
- package/bin/formatArgv.js +30 -30
- package/bin/help.js +17 -17
- package/bin/run +21 -21
- package/bin/skills.js +26 -26
- package/lib/BarLayout/index.es.js +348 -348
- package/lib/Buffer/index.es.js +34 -34
- package/lib/Canvas/index.es.js +804 -800
- package/lib/Canvas/index.es.min.js +1 -1
- package/lib/Cardinal/index.es.js +89 -89
- package/lib/Eoap/index.es.js +32 -32
- package/lib/Hermite/index.es.js +34 -34
- package/lib/MapCoordinate/index.es.js +199 -199
- package/lib/Matrix4/index.es.js +123 -123
- package/lib/Mercator/index.es.js +18 -18
- package/lib/PieLayout/index.es.js +115 -115
- package/lib/RawCanvas/index.es.js +736 -732
- package/lib/RawCanvas/index.es.min.js +1 -1
- package/lib/SVG/index.es.js +626 -631
- package/lib/SVG/index.es.min.js +1 -1
- package/lib/Shader/index.es.js +34 -34
- package/lib/Texture/index.es.js +52 -52
- package/lib/TreeLayout/index.es.js +301 -315
- package/lib/animation/index.es.js +2 -2
- package/lib/assemble/index.es.js +19 -16
- package/lib/assemble/index.es.min.js +1 -1
- package/lib/getLoopColors/index.es.js +34 -34
- package/lib/getWebGLContext/index.es.js +61 -61
- package/lib/index.umd.js +2797 -2784
- package/lib/index.umd.min.js +2 -2
- package/lib/initOption/index.es.js +5 -5
- package/lib/mergeOption/index.es.js +34 -34
- package/lib/move/index.es.js +6 -6
- package/lib/rotate/index.es.js +6 -6
- package/lib/ruler/index.es.js +136 -136
- package/lib/scale/index.es.js +5 -5
- package/minialipay/ui-canvas/drawImage.js +35 -35
- package/minialipay/ui-canvas/index.acss +4 -4
- package/minialipay/ui-canvas/index.axml +3 -3
- package/minialipay/ui-canvas/index.d.ts +1 -1
- package/minialipay/ui-canvas/index.js +100 -100
- package/minialipay/ui-canvas/index.json +6 -6
- package/miniprogram/ui-canvas/drawImage.js +35 -35
- package/miniprogram/ui-canvas/index.js +125 -125
- package/miniprogram/ui-canvas/index.json +4 -4
- package/miniprogram/ui-canvas/index.wxml +4 -4
- package/miniprogram/ui-canvas/index.wxss +5 -5
- package/package/BarLayout/index.ts +2 -2
- package/package/Buffer/index.ts +2 -2
- package/package/Canvas/index.ts +2 -2
- package/package/Cardinal/index.ts +2 -2
- package/package/Eoap/index.ts +2 -2
- package/package/Hermite/index.ts +2 -2
- package/package/MapCoordinate/index.ts +2 -2
- package/package/Matrix4/index.ts +2 -2
- package/package/Mercator/index.ts +2 -2
- package/package/PieLayout/index.ts +2 -2
- package/package/RawCanvas/index.ts +2 -2
- package/package/SVG/index.ts +2 -2
- package/package/Shader/index.ts +2 -2
- package/package/Texture/index.ts +2 -2
- package/package/TreeLayout/index.ts +2 -2
- package/package/animation/index.ts +5 -5
- package/package/assemble/index.ts +2 -2
- package/package/getLoopColors/index.ts +2 -2
- package/package/getWebGLContext/index.ts +40 -40
- package/package/index.ts +84 -84
- package/package/initOption/index.ts +2 -2
- package/package/mergeOption/index.ts +2 -2
- package/package/move/index.ts +2 -2
- package/package/rotate/index.ts +2 -2
- package/package/ruler/index.ts +2 -2
- package/package/scale/index.ts +2 -2
- package/package/throttle/index.ts +2 -2
- package/package.json +79 -79
- package/skills/vislite-lib/BarLayout.md +117 -117
- package/skills/vislite-lib/Canvas.md +183 -183
- package/skills/vislite-lib/Interpolation.md +129 -129
- package/skills/vislite-lib/Matrix.md +174 -174
- package/skills/vislite-lib/PieLayout.md +131 -131
- package/skills/vislite-lib/Projections.md +158 -158
- package/skills/vislite-lib/SKILL.md +179 -179
- package/skills/vislite-lib/SVG.md +137 -137
- package/skills/vislite-lib/TreeLayout.md +176 -176
- package/skills/vislite-lib/Utilities.md +261 -261
- package/skills/vislite-lib/WebGL.md +106 -106
- package/skills/vislite-lib/minialipay/ui-canvas.md +95 -95
- package/skills/vislite-lib/miniprogram/ui-canvas.md +98 -98
- package/skills/vislite-lib/uniapp/ui-canvas.md +113 -113
- package/src/Canvas.ts +89 -89
- package/src/Eoap.ts +66 -66
- package/src/Matrix4/index.ts +84 -84
- package/src/Matrix4/move.ts +12 -12
- package/src/Matrix4/rotate.ts +15 -15
- package/src/Matrix4/scale.ts +11 -11
- package/src/Matrix4/transform.ts +64 -64
- package/src/Mercator.ts +27 -27
- package/src/SVG.ts +86 -69
- package/src/common/assemble.ts +30 -22
- package/src/common/canvas/arc.ts +51 -51
- package/src/common/canvas/config.ts +176 -176
- package/src/common/canvas/default.ts +64 -64
- package/src/common/canvas/gradient.ts +31 -31
- package/src/common/canvas/index.ts +189 -189
- package/src/common/canvas/painter.ts +475 -454
- package/src/common/canvas/texts.ts +18 -18
- package/src/common/map/getBoundary.ts +15 -15
- package/src/common/map/tool.ts +29 -29
- package/src/common/option.ts +31 -31
- package/src/common/setStyle.ts +5 -5
- package/src/common/svg/config.ts +213 -213
- package/src/common/svg/default.ts +29 -29
- package/src/common/svg/gradient.ts +53 -53
- package/src/common/svg/index.ts +420 -420
- package/src/common/svg/tool.ts +51 -51
- package/src/common/tree/index.ts +25 -25
- package/src/common/tree/toInnerTree.ts +61 -61
- package/src/common/tree/toPlainTree.ts +135 -135
- package/src/common/type.ts +26 -26
- package/src/common/webgl/buffer.ts +79 -79
- package/src/common/webgl/getWebGLContext.ts +45 -45
- package/src/common/webgl/shader.ts +75 -75
- package/src/common/webgl/texture.ts +98 -98
- package/src/coordinate/MapCoordinate.ts +80 -80
- package/src/getLoopColors.ts +42 -42
- package/src/interpolation/Cardinal.ts +110 -110
- package/src/interpolation/Hermite.ts +65 -65
- package/src/layout/BarLayout.ts +249 -249
- package/src/layout/PieLayout.ts +146 -146
- package/src/layout/TreeLayout.ts +200 -200
- package/src/move.ts +7 -7
- package/src/rotate.ts +7 -7
- package/src/ruler.ts +209 -209
- package/src/scale.ts +6 -6
- package/types/Bar.d.ts +91 -91
- package/types/BarConfig.d.ts +4 -4
- package/types/BarLayout.d.ts +48 -48
- package/types/BarOption.d.ts +31 -31
- package/types/Buffer.d.ts +30 -30
- package/types/Canvas.d.ts +379 -379
- package/types/CanvasConfig.d.ts +61 -61
- package/types/CanvasOption.d.ts +13 -13
- package/types/CanvasOpts.d.ts +9 -9
- package/types/Cardinal.d.ts +20 -20
- package/types/Gradient.d.ts +20 -20
- package/types/Hermite.d.ts +25 -25
- package/types/Map.d.ts +9 -9
- package/types/MapConfig.d.ts +27 -27
- package/types/MapCoordinate.d.ts +22 -22
- package/types/Matrix4.d.ts +79 -79
- package/types/Pie.d.ts +73 -73
- package/types/PieConfig.d.ts +26 -26
- package/types/PieLayout.d.ts +40 -40
- package/types/PieOption.d.ts +21 -21
- package/types/SVG.d.ts +282 -282
- package/types/SVGConfig.d.ts +54 -54
- package/types/Shader.d.ts +22 -22
- package/types/Texture.d.ts +22 -22
- package/types/Tree.d.ts +74 -74
- package/types/TreeConfig.d.ts +52 -52
- package/types/TreeLayout.d.ts +71 -71
- package/types/TreeOption.d.ts +48 -48
- package/types/animation.d.ts +26 -26
- package/types/assemble.d.ts +14 -14
- package/types/getLoopColors.d.ts +13 -13
- package/types/getWebGLContext.d.ts +7 -7
- package/types/index.d.ts +220 -221
- package/types/module.d.ts +110 -110
- package/types/move.d.ts +15 -15
- package/types/option.d.ts +12 -12
- package/types/painterConfig.d.ts +14 -14
- package/types/rotate.d.ts +15 -15
- package/types/ruler.d.ts +24 -24
- package/types/scale.d.ts +15 -15
- package/types/throttle.d.ts +6 -6
- package/types/ui-canvas.d.ts +4 -4
- package/types/uni-canvas.d.ts +3 -3
- package/uni-app/drawImage.js +19 -19
- 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处理 | 需手动处理 | 组件自动处理 |
|