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() {