diff --git a/packages/circle/README.md b/packages/circle/README.md
index b6dc67e8d..f5be46bbf 100644
--- a/packages/circle/README.md
+++ b/packages/circle/README.md
@@ -86,6 +86,13 @@ Page({
```
+### Canvas 转为 Image 方式呈现
+通过`render-to-image`属性设置生成图片。
+
+```html
+
+```
+
## API
### Props
@@ -102,6 +109,8 @@ Page({
| text | 文字 | _string_ | - |
| stroke-width | 进度条宽度 | _number_ | `4` |
| clockwise | 是否顺时针增加 | _boolean_ | `true` |
+| reander-to-image | 渲染成图片 | _boolean_ | `false` |
+
### Slots
diff --git a/packages/circle/demo/index.wxml b/packages/circle/demo/index.wxml
index 02ca40485..b34451b6e 100644
--- a/packages/circle/demo/index.wxml
+++ b/packages/circle/demo/index.wxml
@@ -10,5 +10,9 @@
+
+
+
+
增加
减少
diff --git a/packages/circle/index.ts b/packages/circle/index.ts
index 3e2f7dd41..b377b2283 100644
--- a/packages/circle/index.ts
+++ b/packages/circle/index.ts
@@ -61,10 +61,15 @@ VantComponent({
type: Boolean,
value: true,
},
+ renderToImage:{
+ type: Boolean,
+ value: false,
+ }
},
data: {
hoverColor: BLUE,
+ circleImg:''
},
methods: {
@@ -176,6 +181,29 @@ VantComponent({
});
},
+ generateCircleImage():Promise{
+ const {size}=this.data
+ const dpr = getSystemInfoSync().pixelRatio;
+
+ return new Promise((resolve,reject) => {
+ setTimeout(()=>{
+ wx.canvasToTempFilePath({
+ width:size,
+ height:size,
+ destWidth:size* dpr,
+ destHeight:size* dpr,
+ canvasId: 'van-circle',
+ success:(res)=> {
+ resolve(res.tempFilePath)
+ },
+ fail(err){
+ reject(err)
+ }
+ },this)
+ },200)
+ })
+ },
+
reRender() {
// tofector 动画暂时没有想到好的解决方案
const { value, speed } = this.data;
@@ -220,7 +248,12 @@ VantComponent({
this.setHoverColor().then(() => {
this.drawCircle(this.currentValue);
- });
+ }).then(async ()=>{
+ if(this.data.renderToImage){
+ const circleImg=await this.generateCircleImage()
+ this.setData({circleImg})
+ }
+ })
},
destroyed() {